Я пишу собственную цель NLog, полученную из TargetWithLayout
, и я бы хотел, чтобы она дополнительно записывала трассировку стека, в зависимости от конкретного события журнала. Я определил вложенный макет как этот (синтаксис может быть неправильным):
Layout layout = "${when:${event-properties:StackTraceEnabled}==true:${stacktrace}}";
И я буду создавать такие события:
var logEventInfo = new NLog.LogEventInfo(NLog.LogLevel.Error, "Test", "Test")
{
Properties =
{
{ "StackTraceEnabled", true },
}
};
Однако, это не работает, и, кажется, идет вразрез с дизайном NLog. Из всего, что я видел, NLog оценивает GetStackTraceUsage()
по своим зарегистрированным целям, а затем либо всегда генерирует трассировку стека, либо никогда не генерирует. Это правильно? Есть ли способ настроить генерацию трассировки стека на уровне события?