Log4net adoNetAppender批量插入日志记录事件
问题描述:
有没有办法在AdoNetAppender
中覆盖SendBuffer
方法来批量插入数据库中的日志? 下面这个link在SendBuffer
方法log4net通过迭代loggingevent写入日志数据库并插入每个单独的查询,我想插入所有日志查询,我认为这种方法提高性能。Log4net adoNetAppender批量插入日志记录事件
答
可以使一个类,如:
public class MyAdoNetAppender : AdoNetAppender
{
override protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
{
(... implementation goes here)
}
}
可以使用类像配置(MYDLL是你的DLL名称,并确保您拥有的命名空间是正确的):
<appender name="A1" type="MyAdoNetAppender,MyDll">
你在批量写入数据库方面可能是正确的,但这不是日志记录?记录是关于“写下”事件;这种录音应该尽快发生。那么你如何建议在你的重写方法中建立低水位?如何确定何时最好批量写入loggingevents?如果应用程序崩溃而您仍然有一系列您正在等待写入的事件?我认为log4net家伙可能已经对此进行了研究。弹出并问他们... –
如果性能真的是一个问题,你[记录太多](https://blog.codinghorror.com/the-problem-with-logging/)? – stuartd