3

我正在以编程方式在 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 无济于事。

我必须以编程方式配置它,因为我不知道运行时附加器的数量,所以使用 XML 配置它,我过去已经能够使用它,这是不行的。有人有什么想法吗?我错过了什么吗?

4

2 回答 2

3

这种行为是因为 RollingFileAppender(以及许多其他附加程序以及过滤器)实现了 IOptionHandler 接口,该接口“允许对象延迟激活其选项,直到所有选项都已设置。这是具有相关选项的组件所必需的在所有设置完成之前仍然模棱两可”。

更进一步:“在设置配置属性后,必须在此对象上调用ActivateOptions方法。在调用 ActivateOptions 之前,此对象处于未定义状态,不得使用。”

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

于 2009-05-19T16:19:48.227 回答
0

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

于 2009-03-06T16:55:25.803 回答