【问题标题】:Logging to SQL Server in bulks using log4net使用 log4net 批量记录到 SQL Server
【发布时间】:2016-03-23 01:28:45
【问题描述】:

我正在使用 log4net 将消息记录到使用 AdoNetAppender 的 SQL Server 数据库中。我需要批量插入日志。我试过使用 appender 的 batchSize 属性,但据我所知,结果类似于:

conn.Open();

for (int i = 0; i < count; i++)
{
    comm.ExecuteNonReader();
}

conn.Close();

这最终会转化为一堆插入。因此,如果我的批量大小为 500,那么将有 500 次连续插入。

我的目标是将批量插入到 1 个插入语句中。喜欢 .NET 的 SqlBulkCopy

用 log4net 可以达到这个结果吗?还是我必须实现自己的自定义附加程序才能这样做?

【问题讨论】:

    标签: c# sql-server log4net sqlbulkcopy adonetappender


    【解决方案1】:

    您必须编写自己的自定义附加程序,因为 log4net 并没有开箱即用。您可以从 AdoNetAppender 继承并覆盖 virtual protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)

    AdoNetAppender.cs

    【讨论】:

    • 感谢您的回答。我最终使用了以下实现github.com/cneuwirt/rhino-commons/blob/master/Rhino.Commons/…
    • 嗨,Peter,您有使用 IDbTransaction 进行批量插入的示例吗?
    • @dave 抱歉,我没有这样的例子。在日志场景中,围绕插入添加事务没有意义。回滚可以删除日志。
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多