【问题标题】:Log4net adoNetAppender dosent insert logging event in bulkLog4net adoNetAppender dosent 批量插入日志事件
【发布时间】:2016-09-27 12:26:18
【问题描述】:

有什么方法可以覆盖AdoNetAppender 中的SendBuffer 方法以在数据库中批量插入日志? 在link 下面SendBuffer 方法log4net 通过对loggingevent 的迭代将日志写入数据库并将它们中的每一个插入到单独的查询中,我想在查询中插入所有日志,我认为这种方法可以提高性能。

【问题讨论】:

  • 您在批量写入数据库方面可能是正确的,但这不是日志记录吗?记录是关于“写下”事件;此记录应尽快进行。那么,您如何建议在您的覆盖方法中建立低水位线?您将如何确定何时最好批量写入日志事件?如果应用程序崩溃了,而您还有一整套等待写入的事件呢?我认为 log4net 的人可能已经对此进行了研究。跳过去问他们...
  • 如果性能真的是个问题,你是logging too much吗?

标签: c# log4net log4net-configuration log4net-appender


【解决方案1】:

你可以创建一个这样的类:

public class MyAdoNetAppender : AdoNetAppender
{
    override protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
    {
        (... implementation goes here)
    }
}

您可以在配置中使用该类(MyDll 是您的 dll 名称,并确保您的命名空间正确):

 <appender name="A1" type="MyAdoNetAppender,MyDll">

【讨论】:

    猜你喜欢
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多