如何在运行时使用NLog获取当前目标文件的路径? [英] How to get path of current target file using NLog in runtime?
本文介绍了如何在运行时使用NLog获取当前目标文件的路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在下一个配置中使用NLog:
I use NLog with next configuration:
<targets>
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
我试图获取FileTarget
的FileName
属性(我检查了集合中是否只有一个FileTarget)
I tried to get FileName
property of FileTarget
(I check, that there only one FileTarget in collection)
NLog.LogManager.GetCurrentClassLogger().Info("test");
var logFile = (from t in NLog.LogManager.Configuration.AllTargets
where t is NLog.Targets.FileTarget
select (NLog.Targets.FileTarget)t).FirstOrDefault();
但是logFile.FileName仅包含文件名模式,与设置中的指定方式完全相同.
But logFile.FileName contains only pattern of file name, exactly how it's specified in settings.
如何获取当前日志文件的运行时路径?
How can I get in runtime path of current log file?
推荐答案
这对我有用:
var fileTarget = (FileTarget) LogManager.Configuration.FindTargetByName("file");
// Need to set timestamp here if filename uses date.
// For example - filename="${basedir}/logs/${shortdate}/trace.log"
var logEventInfo = new LogEventInfo {TimeStamp = DateTime.Now};
string fileName = fileTarget.FileName.Render(logEventInfo);
if (!File.Exists(fileName))
throw new Exception("Log file does not exist.");
这篇关于如何在运行时使用NLog获取当前目标文件的路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文