使用 log4net 批量登录到 SQL 服务器

Logging to SQL Server in bulks using log4net

我正在使用 log4net 将消息记录到使用 AdoNetAppender 的 SQL 服务器数据库。我需要批量插入日志。我试过使用 appender 的 batchSize 属性,但据我所知,结果是这样的:

conn.Open();

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

conn.Close();

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

我的目标是在 1 个插入语句中插入大量数据。就像 .NET 的 SqlBulkCopy.

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

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

AdoNetAppender.cs