905 Stimmen

Wann die verschiedenen Protokollebenen zu verwenden sind

Es gibt verschiedene Möglichkeiten, Meldungen zu protokollieren, und zwar in der Reihenfolge ihres Auftretens:

  1. FATAL

  2. ERROR

  3. WARN

  4. INFO

  5. DEBUG

  6. TRACE

Wie entscheide ich, wann ich was verwende?

Was ist eine gute Heuristik, die man verwenden kann?

22 Stimmen

Ziemlich weit gefasste Frage. Daher ist mehr als eine Antwort möglich, je nach den tatsächlichen Umständen der Erfassung. Jemand wird vermissen notice in dieser Sammlung wird jemand nicht ...

3 Stimmen

@Wolf, wo würde "notice" in dieser Hierarchie stehen? Nur fürs Protokoll...

3 Stimmen

notice kann durchaus fehlen, da einige beliebte Protokollierungsdienste wie log4j sie nicht verwenden.

29voto

kvz Punkte 4837

Ich würde empfehlen, die Syslog-Schweregrade zu übernehmen: DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY .
Siehe http://en.wikipedia.org/wiki/Syslog#Severity_levels

Sie sollten genügend fein abgestufte Schweregrade für die meisten Anwendungsfälle bieten und werden von vorhandenen Log-Parsern erkannt. Sie haben natürlich die Freiheit, nur eine Teilmenge zu implementieren, z.B. DEBUG, ERROR, EMERGENCY je nach den Anforderungen Ihrer Anwendung.

Lassen Sie uns etwas standardisieren, das es schon seit Ewigkeiten gibt, anstatt für jede App, die wir entwickeln, einen eigenen Standard zu erfinden. Sobald man anfängt, Protokolle zu aggregieren und versucht, Muster über verschiedene Protokolle hinweg zu erkennen, ist das wirklich hilfreich.

2 Stimmen

Ich brauche ein Trace-Protokoll, da ich sehen möchte, wie die Dinge in meinem Code ausgeführt werden. Was tut syslog, um dies zu beheben?

0 Stimmen

Traces sind in der Regel nichts, was man über Syslog übertragen möchte, und ich denke, es steht Ihnen frei, diese Ebene für Ihre eigenen interaktiven Debugging-Sitzungen hinzuzufügen?

5 Stimmen

All diese erweiterten Ebenen erhöhen die Komplexität der Protokollierung IMO. Am besten hält man sich an den einfachsten Satz, der den Bedürfnissen der jeweiligen Anwendung entspricht. Für mich sollten Sie beginnen mit DEBUG , INFO , WARNING y ERROR . Entwickler sollten alle Ebenen sehen. SysAdmins bis zu INFO und Endbenutzer können Warnungen und Fehler sehen aber nur, wenn es einen Rahmen gibt, um sie darauf aufmerksam zu machen .

27voto

Wenn Sie das Problem beheben können, handelt es sich um eine Warnung. Wenn es die weitere Ausführung verhindert, ist es ein Fehler.

7 Stimmen

Aber was ist dann der Unterschied zwischen Fehler und fatalem Fehler?

48 Stimmen

Ein Fehler ist etwas, das Sie tun (z. B. eine nicht existierende Datei lesen), ein fataler Fehler ist etwas, das Ihnen angetan wird (z. B. kein Speicher mehr vorhanden).

20voto

paxdiablo Punkte 809679

Warnungen, von denen Sie sich erholen können. Fehler, die man nicht beheben kann. Das ist meine Heuristik, andere haben vielleicht andere Ideen.

Angenommen, Sie geben/importieren den Namen "Angela Müller" in Ihre Anwendung (beachten Sie den Umlaut über dem u ). Ihr Code/ihre Datenbank kann nur auf Englisch sein (obwohl es wahrscheinlich sollte nicht in der heutigen Zeit) und konnte daher darauf hinweisen, dass alle "ungewöhnlichen" Zeichen in reguläre englische Zeichen umgewandelt worden waren.

Im Gegensatz dazu wird bei dem Versuch, diese Informationen in die Datenbank zu schreiben, 60 Sekunden lang eine Meldung über den Ausfall des Netzwerks zurückgegeben. Das ist eher ein Fehler als eine Warnung.

0 Stimmen

Befindet sich die Datenbank in einem bestimmten Zeichensatz, der die Umlaute nicht enthält, muss diese Eingabe zurückgewiesen werden.

5 Stimmen

Cochise, die Welt ist selten so schwarz und weiß :-)

11voto

ThangTD Punkte 1446

Aus RFC 5424, dem Syslog-Protokoll (IETF) - Seite 10:

Jede Meldungspriorität hat auch eine dezimale Schweregradanzeige. Diese sind in der folgenden Tabelle zusammen mit ihren numerischen Werten beschrieben Werte beschrieben. Die Schweregradwerte MÜSSEN im Bereich von 0 bis einschließlich 7 liegen.

       Numerical         Severity
         Code

          0       Emergency: system is unusable
          1       Alert: action must be taken immediately
          2       Critical: critical conditions
          3       Error: error conditions
          4       Warning: warning conditions
          5       Notice: normal but significant condition
          6       Informational: informational messages
          7       Debug: debug-level messages

          Table 2. Syslog Message Severities

9voto

pepoluan Punkte 5313

Taco Jan Osinga's Antwort ist sehr gut und obendrein sehr praktisch.

Ich stimme ihm teilweise zu, wenn auch mit einigen Abweichungen.

Auf Python gibt es nur 5 "benannte" Protokollierungsebenen Deshalb verwende ich sie so:

  • DEBUG -- Informationen, die für die Fehlersuche wichtig sind und im normalen Tagesbetrieb normalerweise unterdrückt werden
  • INFO -- täglicher Betrieb als "Beweis" dafür, dass das Programm seine Funktion wie vorgesehen erfüllt
  • WARN -- eine unnormale, aber wiederherstellbare Situation, *oder* das Auffinden von etwas, das puede zu künftigen Problemen führen
  • ERROR -- etwas ist passiert, das das Programm zur Wiederherstellung zwingt, aber die Wiederherstellung es erfolgreich. Das Programm befindet sich jedoch wahrscheinlich nicht in dem ursprünglich erwarteten Zustand, so dass der Benutzer des Programms sich anpassen muss
  • CRITICAL -- es ist etwas passiert, das nicht wieder gut gemacht werden kann, und das Programm muss wahrscheinlich beendet werden, damit nicht jeder in einem Zustand der Sünde lebt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X