通过XML文件*和*代码配置log4net附加程序

我今天开始玩log4net,到目前为止,我真的很喜欢.为了保留我们当前的日志记录功能,无论何时启动应用程序,应用程序都需要创建一个新的日志文件.日志文件名中已编码日期和时间戳.目前,我已经通过XmlConfigurator配置了log4net,它工作得很好,除了RollingFileAppender的文件名硬编码在配置XML文件中.

我想继续使用XmlConfigurator,但是在调用Configure()之后,我想使用RollingFileAppender,并在代码中将其文件值更改为动态生成的字符串. documentation online示例现在似乎已失效,但是我仔细阅读了SDK参考,看起来我可以使用Heirarchy和GetAppenders()来完成我需要做的事情.我在正确的轨道上吗?

好的,我对此进行了尝试,并尝试了以下代码,该代码不起作用:

private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
    // get the appenders
    IAppender[] appenders = hierarchy.GetAppenders();
    // change the filename for the RollingFileAppender
    foreach( IAppender a in appenders) {
        RollingFileAppender rfa = a as RollingFileAppender;
        if(rfa == null)
            continue;
        rfa.File = "newfile.log"; // no runtime error, but doesn't work.
    }
}
_log.Info("Application started");
最佳答案
在这种情况下,您是否需要滚动文件附加程序?如果不是这样,我希望您的代码在使用常规文件追加器的情况下会产生所需的结果.

编辑:如果您在附加程序上调用ActivateOptions(),则可能与RollingFile Appender一起使用.

相关文章

    转载注明原文:通过XML文件*和*代码配置log4net附加程序 - 代码日志