.net 如何查询NLog日志文件的路径?
我为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}"
<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 });
}