我正在使用Microsoft Logging Application Block(版本5 beta 2),我正在尝试将日志文件的文件名动态设置为年月和日(然后每天写一个新的日志文件) 。但是,在运行时,记录器会忽略任何动态环境变量,例如%date%,%time%或%cd%。我可以将静态环境变量添加到文件名(例如%username%),但不能添加动态环境变量。有谁知道如何让滚动平面文件跟踪侦听器动态设置日志文件名中的日期?
(这就是我将文件名设置为:Log_%date%.log)
答案 0 :(得分:5)
@Robertc,我知道这个问题已被标记但我认为我有一个技巧可以用于你的下一个项目:使用你自己的环境变量!
E.g。 在您对Logging Block进行任何调用之前
Environment.SetEnvironmentVariable("MYDATE", "15/07/2010"); // << change the hardcoded date to get from DateTime
Debug.WriteLine (Environment.ExpandEnvironmentVariables(@"c:\Log\Log_%MYDATE%.log"));
在app.config中,在相应的滚动平面文件跟踪侦听器
中FileName=Log_%MYDATE%.log
注意:此技巧仅在您每天重新启动应用程序时才有效。
答案 1 :(得分:2)
我放弃了Logging Application Block并切换到了log4net。 Log4net允许我使用web.config设置将日志名称设置为今天的日期。我在Code Project上写了一篇文章,展示了如何让log4net使用策略注入应用程序块here