2010-12-01 12 views
2

とにかく、または「ログレベル」の設定が発生するたびにログを記録するようにlog4jに設定されていますか?ログレベルの変更時に通知するLog4j

私は誰かが、デバッグレベルをINFOからDEBUGに変更したことを知っています。私は、そのイベントをlog4jによって記録したいと思っています。

ありがとうございます。

+0

参照してください。アプリを再デプロイする必要があります。私はそれがランタイムイベントではないと思います。 – duffymo

+0

間違っています。ランタイムlog4j.propertiesまたはlog4j.xmlでうまく構成できます。 – Roman

答えて

0

Log4Jの自己ロギングがあります。私はそれを使用したことはありませんが、解決策が存在する場合、それはそこにあります。私はlog4jのソースコードをダウンロードし、ログレベルが変更されていることを「知っている」ところで調べようとします。コードを見つけたら、自己ログに何かを印刷し、必要に応じて設定するかどうかを確認します。

あなたがそれを見つけたらもっと具体的な答えを投稿できるのであれば、私は感謝します。がんばろう。あなたは、JSP、サーブレット、またはログレベルを変更することができ、アプリケーションの画面を持っている場合は、これをログに記録するために、実行時に

+0

使用可能な解決策がない場合は、これを行うことがあります。 – Roman

+0

このクラスにはsetInternalDebugging(boolean)メソッドがあります。それはあなたに与えるかもしれませんが、あなたが望むかもしれませんが、それ以上のことはありません。この大量のログを有効にするためのパフォーマンスが低下します。それ以外は、クラスはLoggerのように機能します – Sean

0

、あなたが最も可能性が高い。この

public void changeLogLevel(String className, String logLevel){ 
    Logger logger = Logger.getLogger(className); 
    Level level = Level.toLevel(logLevel); 
    logger.setLevel(level); 
} 

のようなものをやってますイベントでは、あなたがしなければならないだろうすべては、このイベントのためのログレベルが発生するたびに

private static Logger classLogger = Logger.getLogger(ThisClass.class); 
public void changeLogLevel(String className, String logLevel){ 
    Logger logger = Logger.getLogger(className); 
    Level level = Level.toLevel(logLevel); 
    logger.setLevel(level); 
    classLogger.debug("The Level of " + className + " has changed to " + logLevel); 
} 

を余分ロガーステートメントを追加している、あなたはここでそれをログに記録することができます。ファンシーになりたい場合は、このログを自分のファイルに送信してください。ログレベルを変更したユーザのIP /ユーザ名を含めるように、この方法をさらに進めることができます。

アプリケーションを制御できる場合は、アプリケーションでログレベルを変更できる唯一のポイントであることを確認してください。

+0

いいえ、それは意味していませんでした。ログレベルは、プロパティとxmlファイルから設定されます。 Log4jはそのファイルに自動リスナーを持っています – Roman

+0

リスナーの場合、ファイルの新しいタイムスタンプを探し、新しいバージョンが見つかった場合は、メモリ内の前の設定を消去して新しいファイルをロードします。私はそれが行単位であるとは思わない。その場合、各行は「新規」です。 log4jデバッグ(log4j.configDebugフラグ)をオンにしない限り、変更された内容を正確にキャプチャすることはできません。 Log4jの設定方法を示すために、元の質問を更新したい場合があります。 – Sean

0

これはあなたの質問には答えませんが、組み込みのjava.util.logging.LogManager実装には、あなたが望むものを正確に実行するaddPropertyChangeListener()メソッドがあります。

私はLog4Jの中に匹敵する何かを見つけることができませんでしたが、私はそのハード...

1

を見ていない私はそれはあなたのケースだかどうかわからないんだけど、あなたはconfigureAndWatchあなたを使用して設定ファイルを再ロードしている場合システムプロパティー-Dlog4j.debug=trueを設定する必要がある情報を見ることができるはずです。

は通常のlog4j.xmlで行われているパッケージのログレベルを変更する http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/xml/DOMConfigurator.html

関連する問題