2009-09-12 21 views
2

今、私はプログラムでlog4netを設定し、RollingFileAppenderインスタンスを作成してからBasicConfigurator.Configure()を呼び出します。これは素晴らしいですが、私は2つの同一ファイルを作成しようとしています - タイムスタンプ付きのディレクトリに1つはアプリケーションの実行ごとに作成され、もう1つは静的な場所に作成され、 (これは自動テストの実行にのみ使用されるため、大量のディレクトリを作成することは問題になりません)2つの別々のファイルに同じメッセージを書き込むためにlog4netをプログラムで設定する

理想的には、これらのファイルを完全に同一にしたいのですが、log4netによって実現できない可能性があります。彼らが異なるロガー名を持っているなら、それはいいです - 限り、私は両方のログファイルに1つのログステートメントを書くことができます。

私の現在のコード:

IAppender appender = new RollingFileAppender 
{ 
    ... 
} 

appender.ActivateOptions(); 

BasicConfigurator.Configure(appender); 
+0

設定ファイルに2つのアペンダーを設定して、テスト用に別の設定ファイルを使用するのはなぜですか? – TrueWill

+0

@TrueWill:これらのテストは、スタンドアロンの.exeとPowershellのコマンドレットを使用して実行されます。 .configファイルのlog4netセクションは、Powershellから実行すると読み込まれません。プログラムを使用することで、両方のシナリオで同じ構成を使用することができます。 –

答えて

3

それは完全にプログラムでそれを行うことは完全に可能ですが、私はそれをルックアップするのは簡単だが、ここではAPIを説明するように感じることはありません。

これまでのところ、最も簡単で柔軟な方法は、2つのアペンダーを設定ファイルから読み込むように設定することでした。これを強制的にlog4net.Config.XmlConfigurator.Configure()を呼び出すことで強制できます。また、コード内にすべて保持する場合は、XmlElementをConfigure()に渡すこともできます。

+1

XMLをプログラムで構築すると、XmlConfiguratorを呼び出すのがはるかに簡単になりました。ありがとう。 –

関連する問題