Замена Log4Net для Core
Что пользуете вместо? Уже пару штук попробовал никак не получается вывести имя потока, класса и функции.
С классом и функцией может еще и получится, но вот с потоком никак ничего не могу найти.
Пока подался NLog. Нужно только умолчания изменить
layout="${longdate} ${uppercase:${level}} [${threadname}] ${callsite:className=false:fileName=true:includeSourcePath=false} ${message} ${onexception:${newline}${exception:format=tostring}}"
Выводится
- Thread Name
- Function Name
- File Name
- File line number
2021-05-23 12:56:33.6074 TRACE [GuiMain] OnStartup(App.xaml.cs:47) ***Start application*** 2021-05-23 12:56:33.6669 DEBUG [GuiMain] OnStartup(App.xaml.cs:50) Test 2021-05-23 12:56:36.2837 TRACE [GuiMain] OnExit(App.xaml.cs:58) ***End application***
Что пользуете вместо? Уже пару штук попробовал никак не получается вывести имя потока, класса и функции. С классом и функцией может еще и получится, но вот с потоком никак ничего не могу найти.
Раньше в БД Microsoft Access логи запихивал, т.е. OleDB, так можно искать по SQL запросу. Потом по умолчанию что с .NET шло то и использовал, т.е. EventLog/запись в журнал см. EventLog. Одна немецкая IT компания помойму в своих продуктах использует FireBird для логов, но это примерно. А сейчас я бы использовал бы для логов SQLite.
Кто не понял. Речь не идёт о том куда записывать или в каком формате записывать.
Интересует, что применяете для .NET Core и выше и как там сделать дополнительные поля, что меня интересуют.
В Serilog, мне например, не удалось найти возможности добавить имя потока, класса, функции.
. Но когда логов идет 30 тыс записей в секунду, то без JSON уже сложно.
Это как то странно. JSON это всего лишь форматированный текст и от обычного он отличается лишь форматированием. 30 тыс в секунду это сколько получается в неделю? Как найти сообщение в логе недельной давности?
зачем парсить лог? Имхо в лог смотрят, когда проблемы и пытаются понять, анализируя записи непосредственно перед проблемой. Если перед проблемой 30 тыс. записей и это за секунду, то не сильно понятно, что можно в таком логе найти. Или я что то не понимаю...
Ну представь себе с двадцать K8s кластеров из сотен виртуальных машин, сотни приложений на всём этом. Тысячи контейнеров, многие из которых живут минуты или часы.
Всё это генерит те самые 30 тыс сообщений. У каждого лога свой формат. И теперь тебе нужно найти сообщения о неудачных попытках логина юзера, например. Нужно понять где, когда, что делал.
Будете в Эксель выгружать?
Всякое бывает, у нас логи не по 30тыс записей в секунду, но около 2 гиг за 3 дня набегает.
Сейчас у нас есть программка, которая парсит логи и собирает статистику. В случае проблем я загружаю логи в эту программку и вижу когда стала расти очередь, могу увидеть было ли в это время увеличение количества сообщений, сколько времени тратилось на обработку сообщений и на каком шаге начинаются тормоза.
Сделано все довольно просто - у нас есть около 20 строк, которые мы ищем регулярными выражениями, т.е. каждая строка лога прогоняется через 20 регулярок. В этом смысле, однозначно было бы удобнее сохранять логи в JSON. Но нам надо human readable лог :)