2017-08-22 7 views
0

私のJavaアプリケーションを動作していないが、Unixのボックス上で実行されていると私のコードは次のようにエントリがあります。はSLF4J:(isDebugEnabled)SLF4Jを使用している

if (LOG.isDebugEnabled()) 
        LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote"); 

私はJMX経由でログでALLまたはDEBUGやTRACEを有効にしようとしたがをそれでもlog文の上には印刷されません。 "isDebugEnabled()"の付いていない文はすべて印刷されます。

これらのログステートメントを有効にするために何ができるでしょうか?私はlogback.xmlを変更することはできず、JMXを使ってログレベルを変更するだけです。

+0

[this](https://stackoverflow.com/questions/18102898/how-can-i-change-log-level-of-single-logger-in-runtime)は役に立ちます –

+0

デバッガをLOGの設定方法を参照してください。また、JMXを介して設定を公開するようにlogbackを設定できることにも注意してください –

答えて

0

私はあなたが「isDebugEnabledなしすべての記述は、()印刷を受ける」と言うとき、あなたはこれを印刷します意味し、正しくあなたを理解している場合:

LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote"); 

が、これはそうではない:

if (LOG.isDebugEnabled()) 
    LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote"); 

LOG.debug()は内部でif (isDebugEnabled())と同等の処理を行うため意味がありません。したがって、デバッガを使用してコードを実行して、何が起こっているのかを調べる必要があります。

LOG.debug(...)が印刷されないが、他のレベルでは、@ a_aのコメントのリンクをたどってプログラムでデバッグにレベルを設定する必要があります。