2017-08-22 2 views
0

Meine Java-Anwendung arbeiten, die SLF4J nutzt läuft auf Unix-Box und mein Code hat Einträge wie:SLF4J: isDebugEnabled() nicht

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

Ich versuche, die Protokollierung bei ALL oder DEBUG oder TRACE über JMX zu ermöglichen, aber Noch über log-Anweisung wird nicht gedruckt. Alle Anweisungen ohne "isDebugEnabled()" werden gedruckt.

Irgendwelche Ideen, was getan werden kann, um diese Protokollanweisungen zu aktivieren? Ich kann logback.xml nicht ändern und verwende nur JMX, um die Log-Level zu ändern.

+0

[this] (https://stackoverflow.com/questions/18102898/how-can-i-change-log-level-of-single-logger-in-runtime) kann helfen –

+0

Können Sie einen Debugger anhängen sehen, wie LOG konfiguriert ist? Beachten Sie auch, dass das Logback so konfiguriert werden kann, dass seine Konfiguration gegenüber JMX verfügbar gemacht wird –

Antwort

0

Wenn ich Sie richtig verstanden habe, wenn Sie sagen: „Alle Angaben ohne isDebugEnabled() gedruckt werden“, meinen Sie das gedruckt wird:

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

aber nicht:

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

Das macht keinen Sinn, da LOG.debug() intern das Äquivalent von if (isDebugEnabled()) machen würde. Daher sollten Sie Ihren Code über einen Debugger ausführen, um herauszufinden, was vor sich geht.

Wenn Sie meinen, dass LOG.debug(...) NICHT gedruckt wird, aber andere Ebenen tun, sollten Sie dem Link in @ a_a's Kommentar folgen, um die Ebene programmgesteuert auf Debug festzulegen.

Verwandte Themen