|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
Привет ! Мне нужно реализовать относительно усложненный алгоритм логера. Решил изучить и начать наконец применять в программах известные марки. Остановился на NLog. В процессе гугления решил что он лучше log4net. Если вы считаете, что log4net лучше - сообщите о его уникальных достоинствах пожалуйста :) Вот такой алгоритм хотелось бы сделать. 1. Нужно уметь логироватся в DB и в простой файл. Лог в ДБ - тут все ясно. Лог в файл тоже крайне часто используется - для отладки на месте, или решено, что здесь программе вообще БД не нужна. Думаю лог будет либо туда, либо туда. Вряд ли в оба места сразу. Хотя может во время каких то отладок на месте кто то пожелает включить оба лога - так, что лучше сразу отладить оба варианта параллельно. PS. С этим пунктом, как я понимаю, сложностей нет - создавай несколько Таржетов и вперед. 2. Если во время лога в БД происходит ошибка, то нужно записать в лог-файл. Даже если он отключен. Чтобы не потерять ошибку. Причем хотелось бы не просто записать то, что хотели залогировать, но и сам факт того, что лог в DB не удался. Иначе потом по логу будет видна ошибка, но не будет видно что она не попала в БД. Примерно так: " ДатаВремя. Ошибка: неконтролируемое расплавление реактора началось." " " ДатаВремя. Текст ошибки при записи в БД: 'Нет связи с БД' Пытались записать: <Уровень:Ошибка. Неконтролируемое расплавление реактора началось> " Я нашел какой-то FallbackGroup-target https://github.com/nlog/NLog/wiki/FallbackGroup-target Возможно это то, что нужно,но, паршиво документировано это. Еще вопрос. В программе крутится 2 потока. Если я каждому потоку создам свой инстанс логера, но чтобы они записывали ошибки в один файл - будет работать ? Я хочу, чтобы их сообщения в лог попадали с уникальными именами. Чтобы понять, кто из потоков сглючил и нагадил в лог-файл. Насколько я понял по документации, логгер потоко-защищенный. Надеюсь, что это означает что он сам себе файл не заблочит, и не получится, что в середину сообщения в файле вписалось другое сообщение ("aaaaaaaabbbbbbbbaaaaaaa"). Или Нужно,использовать один инстанс на файл, но так, чтобы он делал уникальные пометки от разных потоков. Как ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 22:36 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
WPF Падаван, по поводу потоков: можно указывать в паттерне логирования номер потока. Будет что-то типа MyClass ThreadID:111 .... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 22:52 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
netivanWPF Падаван, по поводу потоков: можно указывать в паттерне логирования номер потока. Будет что-то типа MyClass ThreadID:111 .... Это с одним инстансом логера или с двумя? По идее, один не сможет, как я понял ему при инициализации задается какое то уникальное имя (как я понимаю то самое "MyClass ThreadID"). И можно сохранять уже сообщения по паттерну. А с двумя у меня все еще сомнения в логе в один файл - сложно протестировать, сложно создать такую тестовую ситуацию: одновременной записи в один файл, все равно могут разойтись на микросекунды и тест провалится. Тут нужно только знать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 14:20 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
Подскажите как сделать, чтобы можно было залогировать 2 сообщения: " ДатаВремя. Текст ошибки при записи в БД: 'Нет связи с БД' (раз) Пытались записать: <Уровень:Ошибка. Неконтролируемое расплавление реактора началось> (два) " Или это все нужно тупо формировать вручную при формировании сообщения? Я все же думаю, придется - логгер оперирует лишь константой ""${message}". Думаю над предустановленным "LayoutWithHeaderAndFooter" - но не могу его настроить. PS. Мне нужно настраивать программно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 17:03 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
WPF Падаван, а как он должен понимать, где надо ставить \r\n? Конечно message сами форматируете) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 18:04 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
netivanWPF Падаван, а как он должен понимать, где надо ставить \r\n? Конечно message сами форматируете) NLog очень наворочен Чувствую я еще долго буду постигать его возможности. Чего только стоит такой наворот: http://nlog-project.org/2011/04/20/exception-logging-enhancements.html В принципе получилось сделать логирование с двумя (и сколько угодно в принципе) частями. Хотя я наверное все очень криво написал - помогите улучшить, у Вас гораздо больше опыта с ним вроде бы :) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Результат Код: c# 1. 2. 3.
Хорошо бы еще мне понять как реализовать Failover с записью в БД, а при ошибке - дублированием в файл. В принципе все это можно сделать простым C# кодом. Но хочется задействовать то, что уже реализованно в NLog. Буду копать дальше... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 18:24 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
Поправил Код: c# 1.
Оказывается можно перевод строки сделать встроенной константой ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 18:32 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
WPF ПадаванПоправил Код: c# 1.
Оказывается можно перевод строки сделать встроенной константойкруто, не знал. Да , молодцы разрабы ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2014, 18:41 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста по NLog еще. 1 Я правильно понимаю, что логгер можно настроить ЛИБО на обработку одного типа сообщений (Debug, Trace и т.д.) ЛИБО задать отрезок "от... до" с помощью MinLevel и MaxLevel ? А как быть, если нужно включить несколько типов, которые не идут подряд? Ну например Debug+Fatal. 2. Вот еще не понятно. Нашел код. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я не понял, а что за имя задается в config.AddTarget ? По идее мы создаем Логгер, с именем. Потом создаем Правило, где указываем к каким логгерам применяется (*), какой уровень и куда отправляется. А вот что за имя, при добавлении Таржета ? И чему оно должно соответствовать ? Оно должно совпадать с именем логгера ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 17:29 |
|
NLog. Есть вопросы.
|
|||
---|---|---|---|
#18+
подскажите почему нлог дублирует записи? 10/15/2014 10:14:46|Debug|select "Date_Add" || SELECT "Date_Add" FROM "SC_Post16"."TPost16" order by "Date_Add" desc limit 1; 10/15/2014 10:14:46|Debug|select "Date_Add" || SELECT "Date_Add" FROM "SC_Post16"."TPost16" order by "Date_Add" desc limit 1; ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2014, 08:18 |
|
|
start [/forum/topic.php?fid=20&msg=38776859&tid=1402362]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |