我正在使用 Microsoft Logging Application Block(版本 5 beta 2),我正在尝试将日志文件的文件名动态设置为年月日(然后每天写入一个新的日志文件)。但是,在运行时,记录器会忽略任何动态环境变量,例如 %date%、%time% 或 %cd%。我可以将静态环境变量添加到文件名(例如 %username%),但不能添加动态环境变量。有谁知道如何让滚动平面文件跟踪侦听器动态设置日志文件名中的日期?
(这是我将文件名设置为:Log_%date%.log)
我正在使用 Microsoft Logging Application Block(版本 5 beta 2),我正在尝试将日志文件的文件名动态设置为年月日(然后每天写入一个新的日志文件)。但是,在运行时,记录器会忽略任何动态环境变量,例如 %date%、%time% 或 %cd%。我可以将静态环境变量添加到文件名(例如 %username%),但不能添加动态环境变量。有谁知道如何让滚动平面文件跟踪侦听器动态设置日志文件名中的日期?
(这是我将文件名设置为:Log_%date%.log)
@Robertc,我知道这个问题已被标记,但我想我有一个技巧可以用于你的下一个项目:使用你自己的环境变量!
例如,在您对 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
注意:此技巧仅在您每天重新启动应用程序时才有效。
我放弃了 Logging Application Block 并切换到 log4net。Log4net 允许我使用 web.config 设置将日志的名称设置为今天的日期。我写了一篇关于代码项目的文章,展示了如何让 log4net 与策略注入应用程序块一起工作。