3

log4netファクトリアダプタのプロパティを設定するためのCommon.Logging(.Net用)に同等のものがあるかどうかは誰にも分かりますか? 次のようにしてlog4netを使用するだけで、私は大きな成功を収めました。

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="logs\Log_%property{BrokerID}.txt"/>
    <appendToFile value="false"/>
    <rollingStyle value="Size"/>
    <maxSizeRollBackups value="-1"/>
    <maximumFileSize value="50GB"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %logger - %message%newline"/>
    </layout>
</appender>

プロパティを次のように設定します。log4net.GlobalContext.Properties["BrokerID"] = 10

最終的にファイルは次のようLog_(null).txtになります。

4

3 に答える 3

3

前の質問に対する私の回答を参照してください。役立つかもしれませんが、そうでないかもしれません。

要約する:

  1. Common.Logging (NET) は、そのWeb サイトで、「コンテキスト」のサポートは「次の」リリースで計画されていると述べています。

  2. 次のリリース (現在のリリースは 2.0) がいつ予定されているかは、 Web サイトでは明確ではありません。ウェブサイトには「6月」と書かれています。現在のリリース (2.0) は 2009 年 4 月でした。この Web サイトは 2009 年 5 月に最後に更新されました (おそらく 2.0 を発表するため)? 「6月」とはどういう意味ですか? 2009 年 6 月? 2010 年 6 月?どちらも行ったり来たりしています。

  3. 「コンテキスト」サポートは Common.Logging でまだ利用できないため、Castle プロジェクトの「コンテキスト」実装を見てください (log4net 実装はこちら)。その実装を Common.Logging に移植することは難しくありません。最終的に Common.Logging から派生するコンテキストの実装が、Castle の実装と似ていない可能性があるというリスクがあります。

  4. Castle の「コンテキスト」サポートは、ILog/ILogger インターフェイスに実装されています。したがって、次のようにコンテキストを設定するのではなく、

直接 log4net 経由でコンテキストにアクセス:

log4net.GlobalContext.Properties["BrokerID"] = 10;

ロギングの抽象化によるコンテキストへのアクセス:

ILog logger = Common.Logging.LogManager.GetCurrentClassLogger();
logger.GlobalContext.Properties["BrokerID"] = 10;

これは、ロガーがあるときにコンテキストを設定するという観点からはかなり良いようです。ロガーを取得せずにコンテキストを設定したいだけの場合は、あまり良くないかもしれません。Common.Logging.LogManager がどの抽象化が「アクティブ」であるかを認識している場合 (抽象化は LogManager.Adapter プロパティを介して設定/取得可能であるため、そうすべきです)。したがって、おそらく「コンテキスト」は ILog インターフェイスからも LogManager.Adapter インターフェイスからも利用できる可能性があります。

于 2010-09-20T16:02:01.243 に答える
0

アプリケーションコードを変更せずに(ただし、構成を変更するだけで)log4net、NLog、EntLibなどを切り替えることができるように、実際のロギング実装にファサードを提供することを目的としているcommon.loggingため、これを介してこれを行うのは意味がないと思いますcommon.logging. ロガーcommon.loggingILog_ そのため、BrokerID プロパティを構成できたとしても、これが他のロギング バックエンドでどのように使用されるかは明確ではありません。

于 2010-01-23T13:32:51.937 に答える