Accesso a SQL Server in gruppi mediante log4net

adonetappender c# log4net sqlbulkcopy sql-server

Domanda

Sto usando log4net per registrare i messaggi su un database SQL Server usando AdoNetAppender . Devo inserire i log in massa. Ho provato a utilizzare la proprietà batchSize dell'appender, ma per quanto posso dire il risultato è qualcosa di simile:

conn.Open();

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

conn.Close();

E questo alla fine si traduce in un mucchio di inserti. Quindi se la mia dimensione del batch è per esempio 500, allora ci saranno 500 inserti consecutivi.

Il mio obiettivo è che i bulks vengano inseriti in 1 istruzione insert. Come su SqlBulkCopy di .NET.

È possibile raggiungere questo risultato con log4net? O devo implementare il mio appender personalizzato per farlo?

Risposta accettata

Devi scrivere il tuo appender personalizzato perché log4net non lo fa immediatamente. Puoi semplicemente ereditare da AdoNetAppender e scavalcare il virtual protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)

AdoNetAppender.cs



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow