2010-11-19 17 views
1

私はに常にのログ値を使用したいアプリケーションをいくつか選択しました。私は単純にLog.Info()を使用してそのままにしておくことができますが、私は、レベル設定を誤って変更することで無効にできないソリューションを好むでしょう。この場合、log4netが無効になっていない限り、これらのログステートメントを起動します。log4netを使用して常に値を記録する

どのような方法が最適ですか?

だけ some information一つの選択肢は、緊急の上に設定された値を持つカスタムレベルを作成することであるように見えるが、それは私が実現していないよ副作用の残酷ひどいハックまたは正当だ場合、私は知らないで見て

オプション。私はドキュメントで明確な指針を見つけることができませんでした。

+0

あなたは私の答えを試しましたか?助けてくれたの? – wageoghe

答えて

0

私はlog4netの専門家ではないですが、このようなものは、あなたがやりたいことがあります

このコードはLogManagerのから名前のロガーを取得し、プログラム的に「ALL」へのレベルを設定します。このロガーをコードの後半で取得すると、設定ファイルでログレベルがOFFに設定されていても、常にログに記録されます。テストするには

、設定ファイルの「OFF」にルートログレベルを設定し、その後、以下のコードを使用します

log4net.ILog log = log4net.LogManager.GetLogger("abc"); 
    log.Info("this won't log because root logger is OFF"); 

    //Reset the level 
    log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger; 

    l.Level = l.Hierarchy.LevelMap["ALL"]; 

    //Try to log again 
    log.Info("this will log because we just reset abc's level to ALL"); 

を、私はそれをテストし、動作するようには思えません。

私はこの情報を見つけましたherehereです。

関連する問題