wake-up-neo.net

Unterschied zwischen logger.info und logger.debug

Was ist der Unterschied zwischen logger.debug und logger.info?

Wann wird logger.debug gedruckt?

61
Senthilnathan

Dies hängt von der Protokollierungskonfiguration ab. Der Standardwert hängt von dem verwendeten Framework ab. Die Idee ist, dass durch das Ändern einer Konfigurationseinstellung von INFO in DEBUG später mehr (oder weniger) Zeilen gedruckt werden, ohne die gesamte Anwendung neu zu kompilieren.

Wenn Sie denken, was Sie verwenden sollen, dann müssen Sie nur noch darüber nachdenken, was Sie auf welcher Ebene sehen möchten. Für andere Ebenen, zum Beispiel in Log4J, sehen Sie sich die API an: http://logging.Apache.org/log4j/1.2/apidocs/org/Apache/log4j/Level.html

21
toomasr

Ich schlage vor, Sie schauen sich den Artikel "Kurze Einführung in log4j" an. Es enthält eine kurze Erläuterung der Protokollebenen und zeigt, wie sie in der Praxis verwendet werden können. Der Grundgedanke von Protokollebenen ist, dass Sie konfigurieren möchten, 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 Protokollebene für jede Komponente Ihres Systems wird normalerweise durch einen Parameter in einer Konfigurationsdatei gesteuert, sodass sie leicht geändert werden kann. Ihr Code enthält verschiedene Protokollierungsanweisungen mit unterschiedlichen Stufen. Wenn Sie auf eine Exception antworten, können Sie Logger.error aufrufen. Wenn Sie den Wert einer Variablen an einem bestimmten Punkt drucken möchten, können Sie Logger.debug aufrufen. Diese Kombination aus konfigurierbarer Protokollierungsstufe und Protokollierungsanweisungen in Ihrem Programm gibt Ihnen die vollständige Kontrolle darüber, wie Ihre Anwendung ihre Aktivitäten protokolliert.

Zumindest bei log4j ist die Reihenfolge der Protokollebenen wie folgt:

DEBUG < INFO < WARN < ERROR < FATAL

Hier ist ein kurzes Beispiel aus diesem Artikel, das die Funktionsweise der Protokollebenen veranschaulicht.

   // 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");
107
William Brendel

Nur eine Klarstellung über die Menge aller möglichen Ebenen, das sind:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
8
user1823890

Grundsätzlich hängt es davon ab, wie Ihre Logger konfiguriert sind. Normalerweise haben Sie während der Entwicklung eine Debug-Ausgabe geschrieben, die jedoch in der Produktion deaktiviert wurde. Möglicherweise haben Sie ausgewählt Debug-Kategorien, während Sie einen bestimmten Bereich debuggen.

Mit unterschiedlichen Prioritäten können Sie den Detaillierungsgrad einer bestimmten Komponente auf einigermaßen feine Weise erhöhen/verringern. Sie müssen lediglich die Protokollierungskonfiguration (und nicht den Code) ändern, um den Unterschied zu erkennen.

7
Jon Skeet

Dies ist eine sehr alte Frage, aber ich sehe mein Verständnis hier nicht, also werde ich meine 2 Cent hinzufügen:

Jedes Level entspricht einem Benutzertyp:

  • debuggen: Entwickler - manuelles Debuggen
  • trace: automatisierte Protokollierung und Schrittverfolgung - für 3rd-Level-Support
  • info: Techniker/Support Level 1/2
  • warn: Techniker-/Benutzerfehler: automatisierte Warnung/Supportstufe 1
  • kritisch/tödlich: hängt von Ihrer Einrichtung ab - lokale IT
0

Es 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), wird logger.debug(...) nicht in Ihrer Konsole gedruckt.

Abhängig von der Kritikalitätsstufe Ihres Codes sollten Sie die genaueste Stufe unter den folgenden verwenden:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
0
Jack'

Was ist der Unterschied zwischen logger.debug und logger.info?

Dies sind nur einige Standardwerte, die bereits definiert sind. 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 am Code vorzunehmen.

Wenn logger.debug gedruckt wird ??

Wenn Sie das Debugging oder eine höhere Ebene in Ihrer Konfiguration aktiviert haben.

0
craftsman