我正在以编程方式在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进行配置(我以前能够使用它)是不行的。有人有任何想法吗?我错过了什么吗?
答案 0 :(得分:3)
这种行为是因为RollingFileAppender(以及许多其他appender以及过滤器)实现了the IOptionHandler interface,它允许对象推迟激活其选项,直到所有选项都被设置为止。这是必需的。具有相关选项的组件在设置为“。
之前保持不明确并且:“在设置配置属性之后,必须在此对象上调用ActivateOptions方法。在调用ActivateOptions之前,此对象处于未定义状态,不得使用。”
通过xml文件配置适配器时,您不必考虑激活,因为它是由log4net配置程序完成的。
答案 1 :(得分:0)
我在设置文件appender之后但在将appender添加到层次结构之前添加了对ActivateOptions()的调用,这似乎有效。为什么有些选项在没有通话的情况下卡住了,但其他选项没有,这是另一天的问题。