2


1

Log4net-いくつかのメソッドで使用されるコードのログ部分

いくつか問題があります。 私のアプリケーションは3つの論理部分(インポート、処理、エクスポート)に分割できます。 私のアプリケーションのいくつかの部分で使用されているコードのいくつかの部分があります。 log4netオブジェクトを呼び出しているコードの部分をどのように判断できますか?

アプリケーションの複数の場所から呼び出されるコードの一部に情報を記録するベストプラクティスは何ですか?

構成ファイルからアプリケーションの一部を記録する機能をオンまたはオフにしたい。 アプリの処理部分のログをオフにした場合、両方がロガーオブジェクトを初期化する1つのメソッドを使用するときに、アプリのエクスポート部分で情報をログに記録するにはどうすればよいですか?

2 Answer


2


記録するアプリの各セクションに個別のロガーを追加し、必要に応じてそれらをオフおよびオンにすることができます。 それらはすべて互いに独立しており、これはすべて設定を介して設定できます。

additivityプロパティをfalseに設定すると、ロガーはすべて互いに独立します。 構成部分の例を次に示します。


コードで使用するには、次のように参照します。

private static ILog _Logger1= LogManager.GetLogger("Logger1");

Logger1に記録するものはすべて、ルートを含む他のロガーとは別のものになります。


1


log4netは、この目的のためにhttp://logging.apache.org/log4net/release/manual/contexts.html[contexts]を提供します。 このようなコンテキストスタックを使用することをお勧めします。

using(log4net.ThreadContext.Stacks["Part"].Push("Import"))
    log.Info("Message during importing");

using(log4net.ThreadContext.Stacks["Part"].Push("Processing"))
    log.Info("Message during processing");

using(log4net.ThreadContext.Stacks["Part"].Push("Export"))
    log.Info("Message during exporting");

スタック上の値は、 PatternLayout`に%property {Part} `を含めることでログに表示できます。