为什么log4net等待缓冲区限制来运行布局?

时间:2013-05-01 14:33:28

标签: .net log4net

我有log4net设置来登录数据库表。设置似乎没问题(我可以将日志记录到数据库中。)

但是,如果我将日志设置为缓冲区<bufferSize value="30" />,那么日志(正确)会等待30个日志,然后再保存到数据库。

但是,在缓冲区已满之前,布局似乎没有运行。

如果我正在记录字符串,那么这不是什么大问题,但我将一个对象传递给我的记录器,然后我有一个自定义FormatXml来序列化要记录的对象。我还有一个自定义对象,它上面有一个布尔值告诉我创建一个打开或关闭的xml标记。

所有这一切都搞砸了,因为调用了日志消息,然后更新引用,然后命中缓冲区限制,然后调用布局(使用更新的引用)。

有没有让log4net立即调用布局,然后缓冲数据库调用?

或者,我可以确保我的日志调用始终是“持久的”(即在我进行日志调用之前进行序列化)。但是我想检查一下我是否可以让lot4net执行我想要的方式。)

1 个答案:

答案 0 :(得分:0)

DB Appender不支持这一点,它需要进行一些更改才能让您想要配置。但是,您可以编写自己的appender。我建议你下载log4net源代码作为我的起点。这样,如果这对您有帮助,您甚至可以使用不同的缓冲策略(不基于日志事件的数量)。