Я использую log4net для регистрации сообщений в базе данных SQL Server с помощью AdoNetAppender
. Мне нужно вставить журналы в пакеты. Я пробовал использовать свойство batchSize
, но насколько я могу сказать, результат выглядит примерно так:
conn.Open();
for (int i = 0; i < count; i++)
{
comm.ExecuteNonReader();
}
conn.Close();
И это в конечном итоге переводится в кучу вложений. Поэтому, если размер партии составляет, например, 500, тогда будет 500 последовательных вставок.
Моя цель состоит в том, чтобы пакеты были вставлены в 1 инструкцию insert. Подобно .NET SqlBulkCopy
.
Можно ли добиться этого результата с помощью log4net? Или мне нужно реализовать собственный пользовательский аккаунт для этого?
Вы должны написать свой собственный пользователь, потому что log4net не делает это из коробки. Вы можете просто наследовать от AdoNetAppender и переопределить virtual protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)