如何在文件名上使用具有相同缓存日期时间的多个文件目标创建Nlog

时间:2014-02-05 03:50:00

标签: logging nlog

我正在使用Nlog 2.0,我设置了2个文件目标,一个用于我们常用的跟踪日志,另一个用于错误日志。我使用fileName="Error_${cached:cached=true:inner=${date:format=yyyyMMdd_HHmmss}}.txt"为单次执行应用程序的日志提供一致的文件名。

问题是错误日志在文件名中的时间与跟踪日志的时间不同,因为错误开始记录的时间要晚得多。现在,我已经开始在应用程序的开头发送一个空行,以使两个日志具有相同的名称。是否有明确的方法,即两个目标的单个缓存日期时间?

1 个答案:

答案 0 :(得分:4)

NLog在写入第一个日志之前不会创建日志文件。听起来您希望根据应用程序的开始时间命名您的日志文件(或者至少让跟踪日志和错误日志都具有相同的基于时间的名称,以便您可以轻松地将它们关联起来)。如果您不介意代码方法,可以在GlobalDiagnosticsContext中设置时间值,然后使用GlobalDiagnosticsContext命名日志文件。这样的事情应该有用......

在您的程序中,可能在启动时执行的某些代码中,执行以下操作:

NLog.GlobalDiagnosticsContext.Set("LogFileBase", DateTime.Now.ToString("yyyyMMdd_HHmmss"));

在您的NLog.config文件中,将文件命名为:

fileName=${gdc:LogFileBase}.txt

现在,日志文件的名称都将基于应用程序的开始时间。