NLog: Как использовать функцию (простой код) вместо строки макета? - PullRequest
0 голосов
/ 18 февраля 2019

Задание формата сообщения через декларативную строку макета - простой способ, но только в простых случаях.

Когда я вижу условия или вложенные макеты, я хочу использовать простой код для форматирования моего сообщения.

Как я могу отформатировать мои сообщения с помощью простого кода?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вы также можете создать свой собственный класс Layout:

class CustomLayout : Layout
{
    protected string GetFormattedMessage(LogEventInfo logEvent)
    {
         // Legacy-style
         return "King of the world";
    }

    protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
    {
         // New style supports reusable StringBuilder (reduces allocation)
         target.Append(GetFormattedMessage(logEvent));
    }
}
0 голосов
/ 18 февраля 2019

Вы всегда можете зарегистрировать свой собственный модуль визуализации макета, который генерирует любой замечательный шаблон, который вам нравится:

LayoutRenderer.Register("king", (logEvent) => "King of the World");

Просто убедитесь, что вы зарегистрировали макет перед загрузкой NLog-config (или созданием любых объектов NLog-Logger)., включая статические объекты Logger).

Затем вы можете использовать свой пользовательский компоновщик в макете, как обычно (например, ${king})

См. также: https://github.com/NLog/NLog/wiki/How-to-write-a-custom-layout-renderer

См. Также: https://nlog -project.org / Документация / v4.5.0 / html / T_NLog_LogEventInfo.htm (Доступно logevent -свойства)

...