コード内でメッセージをログに記録する方法については、2 番目のアプローチを選択します。
ILog log = LogManager.GetLogger(typeof(Bar));
log.Info("message");
上記のログに送信されるメッセージは、完全修飾型 Bar
を使用して「名前が付けられます」 、例
MyNamespace.Foo.Bar [INFO] message
このアプローチの利点は、ロギングを整理するためのデファクト スタンダードであり、名前空間でログ メッセージをフィルタリングできることです。たとえば、INFO レベルのメッセージをログに記録するが、Bar
のログ レベルを上げるように指定できます。 特にDEBUG:
<log4net>
<!-- appenders go here -->
<root>
<level value="INFO" />
<appender-ref ref="myLogAppender" />
</root>
<logger name="MyNamespace.Foo.Bar">
<level value="DEBUG" />
</logger>
</log4net>
すべてのメッセージを単純に "myLog"
に記録する場合、名前でログをフィルタリングする機能は log4net の強力な機能です。 、あなたはこの力の多くを失います!
EPiServer CMS に関しては、上記のアプローチを使用して、CMS と独自のコードに異なるログ レベルを指定できるはずです。
さらに読むために、ロギングについて書いた codeproject の記事を次に示します。
- 伐採の技術
私の回答は遅くなるかもしれませんが、初心者には役立つと思います。以下のように変更しない限り、実行されたログは表示されません。
Log4net を実装する場合、2 つのファイルを変更する必要があります。
<オール>[app.config の内部] ] :
まず、「configSections」の下に、以下のコードを追加する必要があります;
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
次に、「構成」ブロックの下に、以下のコードを記述する必要があります (このコードは私のニーズに合わせてカスタマイズされていますが、魅力的に機能します)。
<log4net debug="true">
<logger name="log">
<level value="All"></level>
<appender-ref ref="RollingLogFileAppender" />
</logger>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="1" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %C.%M [%line] %-5level - %message %newline %exception %newline" />
</layout>
</appender>
</log4net>
内部呼び出しクラス :
この log4net を使用するクラス内で、以下のコードを宣言する必要があります。
ILog log = LogManager.GetLogger("log");
これで、同じクラス内のどこにいても通話履歴を取得できます。以下は、操作中に呼び出すことができるメソッドの 1 つです。
log.Error("message");
呼び出しクラスに名前を付ける代わりに、次のものを使い始めました:
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
このようにして、log4net を使用するすべてのクラスで同じコード行を使用でき、コピーして貼り付けるときにコードを変更することを覚えておく必要がありません。または、ログ クラスを作成し、他のすべてのクラスにログ クラスを継承させることもできます。 .