2016-09-27 14 views
0

メソッドをAdoNetAppenderにオーバーライドする方法はありませんか? がこのlinkにあるSendBufferの方法log4netは、loggingeventの繰り返しでデータベースにログインし、それぞれを別々のクエリに挿入します。すべてのログをクエリに挿入する必要があります。Log4net adoNetAppender dosentログイベントをバルクに挿入する

+0

あなたはデータベースへの一括書き込みの点では正しいかもしれませんが、このロギングではありませんか?ロギングはイベントを「書き留め」ます。できるだけ早くこの録音を行うべきです。では、オーバーライドされたメソッドで低水準点を確立する方法をどのように提案しますか?どのようにロギングイベントを一括して書き込むのが最適なのかをどのように判断しますか?あなたが書き込みを待っているイベントの完全な配列を持っている間にアプリがクラッシュしたらどうしますか?私はlog4netの人がおそらくこれについての研究をしていると思う。ポップオーバーして質問してください... –

+0

パフォーマンスが実際に問題になっている場合は、[logging too much](https://blog.codinghorror.com/the-problem-with-logging/)ですか? – stuartd

答えて

0

あなたはクラスのようなことができます:

public class MyAdoNetAppender : AdoNetAppender 
{ 
    override protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) 
    { 
     (... implementation goes here) 
    } 
} 

あなたが好きな設定でクラスを使用することができます(MYDLLがあなたのdllの名前で、あなたは正しい名前空間を持っていることを確認してください):

<appender name="A1" type="MyAdoNetAppender,MyDll"> 
関連する問題