Connexion à SQL Server en vrac à l'aide de log4net

adonetappender c# log4net sqlbulkcopy sql-server

Question

J'utilise log4net pour consigner des messages dans une base de données SQL Server à l'aide de AdoNetAppender . J'ai besoin d'insérer les journaux en vrac. J'ai essayé d'utiliser la propriété batchSize de l'appender, mais pour autant que je batchSize , le résultat est quelque chose comme:

conn.Open();

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

conn.Close();

Et cela se traduit finalement par un tas d'inserts. Donc, si ma taille de lot est par exemple de 500, il y aura 500 insertions consécutives.

Mon objectif est que les lots soient insérés dans une déclaration d'insertion. Comme SqlBulkCopy de .NET.

Est-il possible d'obtenir ce résultat avec log4net? Ou dois-je implémenter mon propre appender personnalisé pour le faire?

Réponse acceptée

Vous devez écrire votre propre appender personnalisé, car log4net ne le fait pas immédiatement. Vous pouvez simplement hériter de AdoNetAppender et remplacer le virtual protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)

AdoNetAppender.cs



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi