Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Замена Log4Net для Core

636  1 2 все
AlexNek патриот23.05.21 10:17
AlexNek
NEW 23.05.21 10:17 

Что пользуете вместо? Уже пару штук попробовал никак не получается вывести имя потока, класса и функции.

С классом и функцией может еще и получится, но вот с потоком никак ничего не могу найти.

#1 
AlexNek патриот23.05.21 13:01
AlexNek
NEW 23.05.21 13:01 
в ответ AlexNek 23.05.21 10:17

Пока подался 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*** 
#2 
  yurka_ffm знакомое лицо23.05.21 19:50
NEW 23.05.21 19:50 
в ответ AlexNek 23.05.21 13:01

Я б JSON использовал. Парсить проще.

#3 
AlexNek патриот23.05.21 20:00
AlexNek
NEW 23.05.21 20:00 
в ответ yurka_ffm 23.05.21 19:50
Я б JSON использовал

Зачем? В параллель еще CSV можно закинуть.

Лог мне надо видеть, а не парсить. Если надо парсить так лучше сразу в ДБ.

#4 
  yurka_ffm знакомое лицо24.05.21 08:01
NEW 24.05.21 08:01 
в ответ AlexNek 23.05.21 20:00

Для "домашнего" использования JSON может и не нужен. Но когда логов идет 30 тыс записей в секунду, то без JSON уже сложно.

#5 
uscheswoi_82 свой человек24.05.21 08:28
uscheswoi_82
NEW 24.05.21 08:28 
в ответ AlexNek 23.05.21 10:17
Что пользуете вместо? Уже пару штук попробовал никак не получается вывести имя потока, класса и функции. С классом и функцией может еще и получится, но вот с потоком никак ничего не могу найти.

Раньше в БД Microsoft Access логи запихивал, т.е. OleDB, так можно искать по SQL запросу. Потом по умолчанию что с .NET шло то и использовал, т.е. EventLog/запись в журнал см. EventLog. Одна немецкая IT компания помойму в своих продуктах использует FireBird для логов, но это примерно. А сейчас я бы использовал бы для логов SQLite.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#6 
AlexNek патриот24.05.21 10:22
AlexNek
NEW 24.05.21 10:22 
в ответ uscheswoi_82 24.05.21 08:28

Кто не понял. Речь не идёт о том куда записывать или в каком формате записывать.

Интересует, что применяете для .NET Core и выше и как там сделать дополнительные поля, что меня интересуют.

В Serilog, мне например, не удалось найти возможности добавить имя потока, класса, функции.

#7 
AlexNek патриот24.05.21 10:25
AlexNek
NEW 24.05.21 10:25 
в ответ yurka_ffm 24.05.21 08:01
Но когда логов идет 30 тыс записей в секунду

много было проектов, но до такого еще никогда не додумывался смущ

#8 
koder патриот24.05.21 12:06
koder
NEW 24.05.21 12:06 
в ответ yurka_ffm 24.05.21 08:01
. Но когда логов идет 30 тыс записей в секунду, то без JSON уже сложно.


Это как то странно. JSON это всего лишь форматированный текст и от обычного он отличается лишь форматированием. 30 тыс в секунду это сколько получается в неделю? Как найти сообщение в логе недельной давности?

#9 
  yurka_ffm знакомое лицо24.05.21 12:21
NEW 24.05.21 12:21 
в ответ koder 24.05.21 12:06

JSON проще процессить без предварительной обработки при помощи специальных тулзов.

А плоский текст ещё нужно распарсить.

#10 
koder патриот24.05.21 14:31
koder
NEW 24.05.21 14:31 
в ответ yurka_ffm 24.05.21 12:21

зачем парсить лог? Имхо в лог смотрят, когда проблемы и пытаются понять, анализируя записи непосредственно перед проблемой. Если перед проблемой 30 тыс. записей и это за секунду, то не сильно понятно, что можно в таком логе найти. Или я что то не понимаю...

#11 
AlexNek патриот24.05.21 14:54
AlexNek
NEW 24.05.21 14:54 
в ответ koder 24.05.21 14:31
то не сильно понятно

да вообще непонятно зачем это логом называть? Если по 50 символов на строку/запись, то это поток 1.5 Мб/с

#12 
  yurka_ffm знакомое лицо24.05.21 16:06
NEW 24.05.21 16:06 
в ответ koder 24.05.21 14:31

Ну представь себе с двадцать K8s кластеров из сотен виртуальных машин, сотни приложений на всём этом. Тысячи контейнеров, многие из которых живут минуты или часы.

Всё это генерит те самые 30 тыс сообщений. У каждого лога свой формат. И теперь тебе нужно найти сообщения о неудачных попытках логина юзера, например. Нужно понять где, когда, что делал.

Будете в Эксель выгружать?

#13 
Срыв покровов коренной житель24.05.21 17:04
24.05.21 17:04 
в ответ yurka_ffm 24.05.21 16:06

и эти все сотни виртуальных машин пишут каждая в свой файл?

#14 
Срыв покровов коренной житель24.05.21 17:05
NEW 24.05.21 17:05 
в ответ AlexNek 23.05.21 10:17

я пытался настроить лог4нет, но что-то не срослось, уже не помню подробностей.
поэтому остановился на Setrilog, надо посмотреть, вывожу ли я имя класса/метода

#15 
  yurka_ffm знакомое лицо24.05.21 17:09
NEW 24.05.21 17:09 
в ответ Срыв покровов 24.05.21 17:04

Пишут приложения, контейнеры, виртуальные машины, оборудование. Каждый во много файлов.

#16 
Программист коренной житель24.05.21 17:55
NEW 24.05.21 17:55 
в ответ koder 24.05.21 14:31

Всякое бывает, у нас логи не по 30тыс записей в секунду, но около 2 гиг за 3 дня набегает.

Сейчас у нас есть программка, которая парсит логи и собирает статистику. В случае проблем я загружаю логи в эту программку и вижу когда стала расти очередь, могу увидеть было ли в это время увеличение количества сообщений, сколько времени тратилось на обработку сообщений и на каком шаге начинаются тормоза.

Сделано все довольно просто - у нас есть около 20 строк, которые мы ищем регулярными выражениями, т.е. каждая строка лога прогоняется через 20 регулярок. В этом смысле, однозначно было бы удобнее сохранять логи в JSON. Но нам надо human readable лог :)

#17 
  yurka_ffm знакомое лицо24.05.21 18:16
NEW 24.05.21 18:16 
в ответ Программист 24.05.21 17:55
однозначно было бы удобнее сохранять логи в JSON. Но нам надо human readable лог :)

JSON нужен для системы лог-аггрегации и аналитики, которая уже делает содержимое удобным для людей.

#18 
NightWatch коренной житель24.05.21 18:21
NightWatch
NEW 24.05.21 18:21 
в ответ AlexNek 23.05.21 10:17

А в чем причина замены log4net?

#19 
Срыв покровов коренной житель24.05.21 19:01
NEW 24.05.21 19:01 
в ответ yurka_ffm 24.05.21 17:09
Каждый во много файлов.

ну тогда формат файлов это одна из последних проблем.

#20 
1 2 все