Между несколькими комментариями, которые я нашел в Интернете и размышлениями о сборке с Telerik JustDecompile, я смог придумать это решение.
Когда мне нужно точное имя одной из моих целей, я могу просто вызвать метод ниже, как этот
string fileName = GetLogFileName("file");
где файл - это имя моей цели в файле nlog.config
public string GetLogFileName(string targetName) {
string rtnVal = string.Empty;
if (LogManager.Configuration != null && LogManager.Configuration.GetConfiguredNamedTargets().Count != 0) {
Target t = LogManager.Configuration.FindTargetByName(targetName);
if(t != null){
Layout layout = new Layout((t as NLog.Targets.FileTarget).FileName);
rtnVal = layout.GetFormattedMessage(null);
}
}
return rtnVal;
}
для выпуска 2.1.0.0 NLog мне пришлось изменить код на этот
public string GetLogFileName(string targetName) {
string rtnVal = string.Empty;
if (LogManager.Configuration != null && LogManager.Configuration.ConfiguredNamedTargets.Count != 0) {
NLog.Targets.Target t = LogManager.Configuration.FindTargetByName(targetName);
if (t != null) {
NLog.Layouts.Layout layout = (t as NLog.Targets.FileTarget).FileName;
rtnVal = layout.Render(LogEventInfo.CreateNullEvent());
}
}
return rtnVal;
}