logging - 如何使用文件名上具有相同缓存日期时间的多个文件目标制作 Nlog

标签 logging nlog

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

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

最佳答案

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

在你的程序中,可能在一些启动时执行的代码中,做这样的事情:

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

在你的 NLog.config 文件中,像这样命名你的文件:

fileName=${gdc:LogFileBase}.txt

现在您的日志文件的名称都将基于应用程序的启动时间。

关于logging - 如何使用文件名上具有相同缓存日期时间的多个文件目标制作 Nlog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568285/

相关文章:

hadoop - HDP 2.4,如何在一个文件中使用水槽收集hadoop mapreduce日志以及最佳实践

c# - Nlog 和自定义级别

c# - Microsoft Server 2008 R2 不从任务计划程序写入文本文件

nlog - 是否可以在 internalLogFile 中使用 ${shortdate}?

file - Grails-通过附加程序登录文件

PHP Monolog 记录器 RotatingFileHandler 从不旋转文件

c# - 应用程序日志记录和信息分析

python - 如何获取 logging.LogRecord 对象的格式化字符串

asp.net - 使用 NLog 4.5 将结构化数据记录到 Elastic Search 不提供在字段中查询的能力

c# - 如何将异常标记为已记录(并且只记录一次)?