私は反射でプラグインモジュールをロードしているアプリケーションを持っています。私のようなコードでロガーを取得log4net - アセンブリのための異なるログファイル
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\xxx.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<threshold value="DEBUG" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger{2} - %message%newline" />
</layout>
</appender>
: アプリケーションのようにはapp.configにlog4netのログ・アペンダを定義している今
private static readonly ILog log = LogManager.GetLogger(typeof(Indexer));
、私は宣言するための方法を探していますリフレクションを使用してPlugInとしてロードされる各モジュール(アセンブリ)の異なるログファイル。
最初の問題は、モジュールがBusiness-Library-Classesを(すべてのモジュールで使用されているアセンブリ内に)一緒に使用していることです。これもログエントリを生成します。このエントリは、モジュールのログファイルにも挿入する必要があります。
第2の問題は、開発時にモジュールがわからないことです。だから私はapp.configにいくつかの設定を挿入することはできません。
異なるアセンブリから同じインスタンスメソッドが呼び出された場合、プライベートロガーは別のログファイルに書き込むことを望みますか?それは不可能です。とにかくこれをやっているのはなぜですか?単なるトラブルシューティング以外の目的でロギングを使用しているようです。 – Groo
@Groo - いいえ、異なるアセンブリから使用されるインスタンス(ただし同じクラス)は異なります。 – BennoDual
しかし、それらは同じappdomain(単一のアプリケーション)内の異なるアセンブリから使用されますか?ロガーが 'static'フィールドで参照されている場合は、一つのロガーインスタンスがあります。 – Groo