Ich finde es hilfreicher, den Schweregrad aus der Perspektive der Protokolldatei zu betrachten.
Tödlich/Kritisch : Ein allgemeiner Anwendungs- oder Systemfehler, der sofort untersucht werden sollte. Ja, wecken Sie den SysAdmin. Da wir es vorziehen, dass unsere SysAdmins wach und ausgeruht sind, sollte dieser Schweregrad nur sehr selten verwendet werden. Wenn der Fehler täglich auftritt und es sich nicht um einen BFD handelt, hat er seine Bedeutung verloren. Normalerweise tritt ein Fatal-Fehler nur einmal während der Lebensdauer eines Prozesses auf. Wenn also die Protokolldatei an den Prozess gebunden ist, ist dies normalerweise die letzte Meldung im Protokoll.
Fehler : Ein Problem, das auf jeden Fall untersucht werden sollte. Der SysAdmin sollte automatisch benachrichtigt werden, muss aber nicht aus dem Bett geholt werden. Wenn Sie ein Protokoll nach Fehlern und darüber hinaus filtern, erhalten Sie einen Überblick über die Fehlerhäufigkeit und können den auslösenden Fehler, der zu einer Kaskade weiterer Fehler geführt haben könnte, schnell identifizieren. Die Verfolgung der Fehlerhäufigkeit im Vergleich zur Anwendungsnutzung kann nützliche Qualitätsmetriken wie die MTBF ergeben, die zur Bewertung der Gesamtqualität herangezogen werden können. Diese Metrik kann beispielsweise bei der Entscheidung helfen, ob vor einer Veröffentlichung ein weiterer Beta-Testzyklus erforderlich ist oder nicht.
Warnung : Das KANN ein Problem sein, muss es aber nicht. So sollten z. B. erwartete vorübergehende Umgebungsbedingungen, wie ein kurzzeitiger Verlust der Netzwerk- oder Datenbankkonnektivität, als Warnungen und nicht als Fehler protokolliert werden. Die Ansicht eines Protokolls, das nur Warnungen und Fehler anzeigt, kann einen schnellen Einblick in die Ursache eines späteren Fehlers geben. Warnungen sollten sparsam verwendet werden, damit sie nicht bedeutungslos werden. So sollte beispielsweise der Verlust des Netzwerkzugriffs in einer Serveranwendung eine Warnung oder sogar ein Fehler sein, während er in einer Desktop-Anwendung, die für gelegentlich nicht verbundene Laptop-Benutzer gedacht ist, nur eine Info sein kann.
Infos : Dies sind wichtige Informationen, die unter normalen Bedingungen protokolliert werden sollten, z. B. bei erfolgreicher Initialisierung, beim Starten und Stoppen von Diensten oder beim erfolgreichen Abschluss wichtiger Transaktionen. Die Anzeige eines Protokolls mit der Bezeichnung "Info" und höher sollte einen schnellen Überblick über die wichtigsten Zustandsänderungen des Prozesses geben und einen Top-Level-Kontext für das Verständnis von Warnungen oder Fehlern liefern, die ebenfalls auftreten. Es sollten nicht zu viele Info-Meldungen auftreten. In der Regel haben wir < 5% Info-Meldungen im Verhältnis zu Trace.
Spurensuche : Trace ist bei weitem der am häufigsten verwendete Schweregrad und sollte den Kontext liefern, um die Schritte zu verstehen, die zu Fehlern und Warnungen führen. Die richtige Dichte von Trace-Meldungen macht Software viel wartungsfreundlicher, erfordert aber eine gewisse Sorgfalt, da sich der Wert einzelner Trace-Anweisungen im Laufe der Zeit ändern kann, wenn sich Programme weiterentwickeln. Dies lässt sich am besten dadurch erreichen, dass sich das Entwicklerteam angewöhnt, die Protokolle regelmäßig zu überprüfen, da dies ein Standardbestandteil der Fehlerbehebung bei von Kunden gemeldeten Problemen ist. Ermuntern Sie das Team, Trace-Meldungen zu entfernen, die keinen nützlichen Kontext mehr liefern, und Meldungen hinzuzufügen, wenn dies zum Verständnis des Kontexts nachfolgender Meldungen erforderlich ist. So ist es zum Beispiel oft hilfreich, Benutzereingaben wie das Wechseln von Anzeigen oder Registerkarten zu protokollieren.
Debuggen : Wir betrachten Debug < Trace. Der Unterschied besteht darin, dass Debug-Meldungen aus den Release-Builds herauskompiliert werden. Dennoch raten wir von der Verwendung von Debug-Meldungen ab. Wenn man Debug-Meldungen zulässt, führt das dazu, dass immer mehr Debug-Meldungen hinzugefügt werden und keine einzige entfernt wird. Mit der Zeit werden die Protokolldateien dadurch fast nutzlos, weil es zu schwierig ist, das Signal vom Rauschen zu trennen. Das führt dazu, dass Entwickler die Protokolle nicht verwenden, was die Todesspirale weiter antreibt. Im Gegensatz dazu ermutigt das ständige Beschneiden von Trace-Meldungen die Entwickler, diese zu verwenden, was zu einer positiven Spirale führt. Außerdem wird so die Möglichkeit ausgeschlossen, dass Bugs aufgrund notwendiger Nebeneffekte in Debug-Code eingeführt werden, der nicht im Release-Build enthalten ist. Ja, ich weiß, dass das bei gutem Code nicht passieren sollte, aber Vorsicht ist besser als Nachsicht.
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.5 Stimmen
notice
liegt zwischenwarning
yinfo
. datatracker.ietf.org/doc/html/rfc5424#page-11