使用nlog滚动文件登录控制台应用程序

Tho*_*mas 2 .net logging nlog

NLog的文件目标是可配置的,但它似乎不支持我想要实现的目标.

我的控制台应用程序将消息写入日志文件,但我希望它做两件事:

  • 每次运行时都会启动一个新的日志文件.因此,每次启动应用程序时,都应创建一个新的日志文件.
  • 不应覆盖或删除以前的日志文件,我也想保留x最新的运行.

存档*属性似乎非常接近,但它们是按时间滚动,而不是执行基础.

drh*_*ris 5

第一个有点容易.将文件名设置为"log-${cached:${date:format=yyyyMMdd_HH_mm_ss}}.log"或类似的东西.这将使用一个倒下的名称来设置文件,该名称将在每次应用程序执行时进行缓存.

就你的第二个请求而言,这有点困难.你可以尝试设置archiveEvery: "None"maxArchiveFiles: x,但我不知道是否会产生预期的行为,或者只是从来没有在所有归档任何东西.

  • 我建议还添加一个guid来防止同时调用尝试写入同一个文件. (2认同)