Используя ASP.NET v4.7.2, в nlog.config
У меня есть эта цель:
<target name="logfile" xsi:type="File" fileName="{gdc:item=logFileName}" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"/>
В Global.asax.cs:Application_Start
У меня есть это:
GlobalDiagnosticsContext.Set("logFileName", @"c:\\Temp\\nlog-all-${shortdate}.txt");
И просто для примера:
LogManager.Configuration = LogManager.Configuration.Reload();
Помещая точку останова на строке, следующей сразу за ней, и копаясь в свойствах LogManager.Configuration
, я обнаружил, что цель журнала File
имеет это для своего свойства FileName
:
FileName="{gdc:item=logFileName}"
Когда я пишу в логгер, он создает файл в корне приложения, который называется - как вы уже догадались - {gdc:item=logFileName}
.
В Командном окне, в точке останова, сразу же после набора GDC, я выполнил действие нулевого журнала, рекомендованное г-ном Кристенсеном в его ответе:
((NLog.Targets.FileTarget)LogManager.Configuration.AllTargets[1]).FileName.Render(NLog.LogEventInfo.CreateNullEvent())
Результат был {gdc:item=logFileName}
Другими словами, похоже, что средство визуализации макета GDC не работает.
Что я здесь не так делаю?