Was ist der Unterschied zwischen logger.debug
und logger.info
?
Wann wird logger.debug
gedruckt?
Was ist der Unterschied zwischen logger.debug
und logger.info
?
Wann wird logger.debug
gedruckt?
Antworten:
Dies hängt von der Protokollierungskonfiguration ab. Der Standardwert hängt vom verwendeten Framework ab. Die Idee ist, dass später durch Ändern einer Konfigurationseinstellung von INFO in DEBUG eine Menge mehr (oder weniger, wenn umgekehrt) Zeilen gedruckt werden, ohne die gesamte Anwendung neu zu kompilieren.
Wenn Sie überlegen, welches Sie verwenden möchten, müssen Sie sich überlegen, was Sie auf welcher Ebene sehen möchten. Weitere Ebenen, beispielsweise in Log4J, finden Sie in der API unter http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html
Ich schlage vor, Sie lesen den Artikel "Kurze Einführung in log4j" . Es enthält eine kurze Erläuterung der Protokollebenen und zeigt, wie sie in der Praxis verwendet werden können. Die Grundidee der Protokollebenen besteht darin, dass Sie in der Lage sein möchten, zu konfigurieren, wie viele Details die Protokolle je nach Situation enthalten. Wenn Sie beispielsweise versuchen, ein Problem zu beheben, möchten Sie, dass die Protokolle sehr ausführlich sind. In der Produktion möchten Sie möglicherweise nur Warnungen und Fehler sehen.
Die Protokollstufe für jede Komponente Ihres Systems wird normalerweise über einen Parameter in einer Konfigurationsdatei gesteuert, sodass sie leicht geändert werden kann. Ihr Code würde verschiedene Protokollierungsanweisungen mit unterschiedlichen Ebenen enthalten. Wenn Sie auf eine antworten Exception
, können Sie anrufen Logger.error
. Wenn Sie den Wert einer Variablen an einem bestimmten Punkt drucken möchten, können Sie aufrufen Logger.debug
. Diese Kombination aus einer konfigurierbaren Protokollierungsstufe und Protokollierungsanweisungen in Ihrem Programm ermöglicht Ihnen die vollständige Kontrolle darüber, wie Ihre Anwendung ihre Aktivitäten protokolliert.
Zumindest im Fall von log4j lautet die Reihenfolge der Protokollebenen:
DEBUG < INFO < WARN < ERROR < FATAL
Hier ist ein kurzes Beispiel aus diesem Artikel, das zeigt, wie Protokollebenen funktionieren.
// get a logger instance named "com.foo"
Logger logger = Logger.getLogger("com.foo");
// Now set its level. Normally you do not need to set the
// level of a logger programmatically. This is usually done
// in configuration files.
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger("com.foo.Bar");
// This request is enabled, because WARN >= INFO.
logger.warn("Low fuel level.");
// This request is disabled, because DEBUG < INFO.
logger.debug("Starting search for nearest gas station.");
// The logger instance barlogger, named "com.foo.Bar",
// will inherit its level from the logger named
// "com.foo" Thus, the following request is enabled
// because INFO >= INFO.
barlogger.info("Located nearest gas station.");
// This request is disabled, because DEBUG < INFO.
barlogger.debug("Exiting gas station search");
If you want to print the value of a variable at any given point, you might call Logger.debug
hat mir geholfen, die Verwirrung zu klären, die ich zwischen Debug
und Trace
Ebene hatte. Vielen Dank!
Nur eine Klarstellung über die Menge aller möglichen Ebenen, die sind:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Grundsätzlich hängt es davon ab, wie Ihre Logger konfiguriert sind. Normalerweise haben Sie die Debug-Ausgabe während der Entwicklung ausgeschrieben, aber in der Produktion deaktiviert - oder möglicherweise Debug-Kategorien ausgewählt , die beim Debuggen eines bestimmten Bereichs ausgeschrieben wurden.
Wenn Sie unterschiedliche Prioritäten haben, können Sie den Detaillierungsgrad einer bestimmten Komponente auf einigermaßen feinkörnige Weise erhöhen / verringern - und nur die Protokollierungskonfiguration (anstelle von Code) ändern, um den Unterschied zu erkennen.
Was ist der Unterschied zwischen logger.debug und logger.info?
Dies sind nur einige bereits definierte Standardstufen. Sie können Ihre eigenen Ebenen definieren, wenn Sie möchten. Der Zweck dieser Ebenen besteht darin, eine oder mehrere von ihnen zu aktivieren / deaktivieren, ohne Änderungen an Ihrem Code vorzunehmen.
Wann wird logger.debug gedruckt?
Wenn Sie das Debugging oder eine höhere Ebene in Ihrer Konfiguration aktiviert haben.
Dies hängt davon ab, welche Ebene Sie in Ihrer log4j-Konfigurationsdatei ausgewählt haben.
<Loggers>
<Root level="info">
...
Wenn Ihr Level "Info" ist (standardmäßig), logger.debug(...)
wird es nicht in Ihrer Konsole gedruckt. Wenn Ihr Level jedoch "Debug" ist, wird es.
Abhängig von der Kritikalitätsstufe Ihres Codes sollten Sie die genaueste unter den folgenden verwenden:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Dies ist eine sehr alte Frage, aber ich sehe mein Verständnis hier nicht, also werde ich meine 2 Cent hinzufügen:
Jede Ebene entspricht / ordnet einem Benutzertyp zu:
Trace
hoch die Protokollstufe ist.