我正在以编程的方式在log4net中配置RollingFileAppender。我现在有这样的东西:
RollingFileAppender fa = new RollingFileAppender();
fa.AppendToFile = true;
fa.RollingStyle = RollingFileAppender.RollingMode.Date;
fa.DatePattern = "yyyyMMdd";
fa.StaticLogFileName = true;
// Set more properties and add the appender to the root repository这将拒绝根据日期滚动日志。如果我将RollingStyle切换到大小或复合,它将滚动,但只基于大小,而不是基于日期。我试过移除StaticLogFileName并尝试使用DatePattern,但都无济于事。
我必须以编程的方式配置它,因为我不知道运行时的附加器的数量,所以使用XML来配置它是行不通的,我以前就能做到这一点。有人有什么想法吗?我是不是遗漏了什么?
发布于 2009-05-19 16:19:48
这种行为是因为RollingFileAppender (和许多其他附加器以及过滤器)实现了the IOptionHandler interface,它“允许对象延迟激活它的选项,直到所有选项都被设置好。这对于那些相关选项在所有选项都被设置之前保持不明确的组件是必需的”。
并进一步说明:“在设置配置属性后,必须在此对象上调用ActivateOptions方法。在调用ActivateOptions之前,此对象处于未定义状态,不能使用。”
当通过xml文件配置适配器时,您不必考虑激活,因为这是由log4net配置器完成的。
发布于 2009-03-06 16:55:26
在设置文件附加器之后,但在将附加器添加到层次结构之前,我添加了对ActivateOptions()的调用,这似乎起作用了。为什么一些期权在没有看涨期权的情况下仍然有效,而另一些则没有,这是一个改天再问的问题。
https://stackoverflow.com/questions/611483
复制相似问题