0

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

但是,如果我将日志设置为 buffer <bufferSize value="30" />,那么日志(正确地)会等待 30 条日志,然后再将它们持久化到数据库中。

但是,直到缓冲区已满,布局似乎才运行。

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

所有这一切都变得一团糟,因为调用了日志消息,然后更新了引用,然后达到了缓冲区限制,然后调用了布局(使用更新的引用)。

无论如何让 log4net 立即调用布局,然后缓冲数据库调用?

或者,我可以确保我的日志调用始终是“持久的”(即在进行日志调用之前进行序列化)。但我想先看看我是否可以让 lot4net 执行我想要的操作。)

4

1 回答 1

0

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

于 2013-05-04T08:53:59.197 回答