Сценарии

Версия 1.1 от Alexandr Fokin на 2022/08/13 18:01


Форматирование даты
https://github.com/NLog/NLog/wiki/Date-layout-renderer

Форматирование exception
https://stackoverflow.com/questions/4684399/how-to-get-the-stack-trace-when-logging-exceptions-with-nlog
https://stackoverflow.com/questions/46565639/nlog-exception-layout-to-format-exception-type-message-and-stack-trace

The @ means serialize all Exception-properties into Json-format
${exception:format=@}


Контекст логирования MappedDiagnosticsLogicalContext

NLog – tracking flow of requests using MappedDiagnosticsLogicalContext
https://tpodolak.com/blog/2016/07/05/nlog-tracking-flow-of-requests-using-mappeddiagnosticslogicalcontext/


Обрезка строк для избежании ошибки при записи в базу.

NLog auto truncate messages
https://stackoverflow.com/questions/19368284/nlog-auto-truncate-messages


Реализация кастомного target

Extending NLog is... easy!
https://nlog-project.org/2015/06/30/extending-nlog-is-easy.html


Параллельная запись в файл, использует mutex
Параметр concurrentWrites


Асинхронное логирование (в параллельном потоке):

Логирование происходит не в target, а в очередь в оперативной памяти. Дополнительный поток периодически запускается и отправляет сообщения в targets.
При этом может возникнуть необходимость явно очистить текущую очередь сообщений, чтобы гарантировать сохранение логов, сгенерированных на данный момент.
При этом буфер сообщений может переполниться и возможно имеет смысл явно определить политику переполнения (отбрасывать сообщения или увеличить размер буфера)

AsyncTargetWrapper
https://nlog-project.org/documentation/v2.0.1/html/T_NLog_Targets_Wrappers_AsyncTargetWrapper.htm

Should NLog flush all queued messages in the AsyncTargetWrapper when Flush() is called?
https://stackoverflow.com/questions/10492720/should-nlog-flush-all-queued-messages-in-the-asynctargetwrapper-when-flush-is

NLog performance
https://stackoverflow.com/questions/3868240/nlog-performance