31.08.2018 NLog - target.layout выводить сонтекст только если он установлен
 
Здравствуйте,

Пользуемся на проекте NLog логгером.
С некоторых пор стали использовать контексты (GDC, MDC, MDLC, NDC, NDLC).

Например
var contextID = "например ID сессии";
using (NestedDiagnosticsLogicalContext.Push(contextID))
{
    // ...
    log.Info("сообщение 1");
    // ...
    log.Info("сообщение 2");
    // ...
    log.Info("сообщение 3");
    // ...
}


соответсвенно в лог дополнительно к самим текстам сообщений можно выводить (в синтаксисе NLog layout) что-то вроде:
CONTEXT:${ndlc}
${longdate} ${level} CONTEXT:${ndlc}${newline}всё естальное


Но контекст далеко не всегда задан.
При этом я знаю, что в NLog можно layout с условиями задавать (я про $when).
Но вот тут и затык — я не могу сообразить, как его отформатировать так, чтобы "CONTEXT:${ndlc}" выводилось только, если контекст задан?

 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce