我有log4net设置来登录数据库表。设置似乎没问题(我可以将日志记录到数据库中。)
但是,如果我将日志设置为缓冲区<bufferSize value="30" />
,那么日志(正确)会等待30个日志,然后再保存到数据库。
但是,在缓冲区已满之前,布局似乎没有运行。
如果我正在记录字符串,那么这不是什么大问题,但我将一个对象传递给我的记录器,然后我有一个自定义FormatXml
来序列化要记录的对象。我还有一个自定义对象,它上面有一个布尔值告诉我创建一个打开或关闭的xml标记。
所有这一切都搞砸了,因为调用了日志消息,然后更新引用,然后命中缓冲区限制,然后调用布局(使用更新的引用)。
有没有让log4net立即调用布局,然后缓冲数据库调用?
或者,我可以确保我的日志调用始终是“持久的”(即在我进行日志调用之前进行序列化)。但是我想检查一下我是否可以让lot4net执行我想要的方式。)
答案 0 :(得分:0)
DB Appender不支持这一点,它需要进行一些更改才能让您想要配置。但是,您可以编写自己的appender。我建议你下载log4net源代码作为我的起点。这样,如果这对您有帮助,您甚至可以使用不同的缓冲策略(不基于日志事件的数量)。