我正在以编程方式在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切换为Size或Composite,它将滚动,但仅基于大小,而不是基于日期。我已经尝试删除StaticLogFileName并使用DatePattern无济于事。

我必须以编程方式配置它,因为我不知道运行时的appender数量,因此使用XML进行配置(我以前能够使用它)是不行的。有人有任何想法吗?我错过了什么吗?

有帮助吗?

解决方案

这种行为是因为RollingFileAppender(和许多其他appender以及过滤器)实现了 IOptionHandler接口,它允许对象推迟激活其选项,直到设置了所有选项。对于具有相关选项的组件,这是必需的,直到所有选项都设置为“。

进一步:“ ActivateOptions 方法。在调用ActivateOptions之前,此对象处于未定义状态,不得使用。“

通过xml文件配置适配器时,您不必考虑激活,因为它是由log4net配置程序完成的。

其他提示

我在设置文件appender之后但在将appender添加到层次结构之前添加了对ActivateOptions()的调用,这似乎有效。为什么有些选项在没有通话的情况下卡住了,但其他选项没有,这是另一天的问题。

scroll top