.net 如何查询NLog日志文件的路径?

.net 如何查询NLog日志文件的路径?,.net,nlog,.net,Nlog,我为NLog配置了一个文件目标,如下所示: <targets> <target name="asyncFile" xsi:type="AsyncWrapper"> <target xsi:type="File" name="logfile" fileName="${basedir}/Logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}"

我为NLog配置了一个文件目标,如下所示:

<targets>
  <target name="asyncFile" xsi:type="AsyncWrapper">
    <target xsi:type="File" name="logfile" fileName="${basedir}/Logs/${shortdate}.log"
          layout="${longdate} ${uppercase:${level}} ${message}" />
  </target>    
</targets>


如何通过NLog的API查询此
文件
目标的实际文件系统路径(
文件名
)?

我刚刚尝试通过

遗憾的是,配置似乎是由实际目标评估的,而不是在配置中解析的

对于appdomain基本目录,您可以自己读取该值

var basedirPath = AppDomain.CurrentDomain.BaseDirectory;

您可以在代码内部使用nLog的api,而不是xml配置文件。然后,在应用程序中,将日志的文件路径分配给一个变量,并将该变量用作目标文件名。您可以访问该变量,也可以随时更改它(这里我的代码段是在类内部定义的)


你的要求是什么?你为什么需要知道路径?@ckeller这很有趣,因为我不一定知道
${basedir}
的计算结果。工作起来很有魅力!
Private MainNlogConfig As New LoggingConfiguration()
Dim localrule As New LoggingRule(*, LogLevel.Info, locallogtarget)
MainNlogConfig..AddTarget("file", locallogtarget)

With locallogtarget
    .Layout = "${longdate} ${logger} ${message}"
    .FileName = appdir & appName & ".log"  '----->LOOK HERE!
End With
LogManager.Configuration = MainNlogConfig
    private string GetLogFile()
    {
        var fileTarget = LogManager.Configuration.AllTargets.FirstOrDefault(t => t is FileTarget) as FileTarget;
        return fileTarget == null ? string.Empty : fileTarget.FileName.Render(new LogEventInfo { Level = LogLevel.Info });
    }