Frage

In Logging Frameworks wie log4j & log4net Sie die Möglichkeit, verschiedene Informationsebenen zu protokollieren. Die meisten der Ebenen haben offensichtliche Absichten (wie, was ein „Debug“ Protokoll ist im Vergleich zu einem „Fehler“). Aber eine Sache, die ich schon immer ängstlich gewesen auf war meine Protokollierung als „Fatal“ klassifiziert werden.

Welche Art von Fehlern so schwerwiegend sind, dass sie als fatal eingestuft werden sollten? Während dieser angetrieben leicht Fall ist, was sind einige der Regeln-of-Daumen, die Sie verwenden, wenn zwischen der Anmeldung eine Ausnahme als fatal oder einfach nur Fehler entdeckt?

Entscheidung
War es hilfreich?

Lösung

halte ich fatalen Fehler sein, wenn die Anwendung nicht mehr nützliche Arbeit tun können. Nicht schwerwiegende Fehler sind, wenn es ein Problem gibt, aber Ihre Anwendung kann nach wie vor, auch auf einem niedrigeren Niveau an Funktionalität oder Leistung weiter funktionieren.

Beispiele für schwerwiegende Fehler enthalten:

  • Ausführen von Speicherplatz auf dem Logeinrichtung und Sie sind erforderlich, Protokollierung zu halten.
  • Völliger Verlust der Netzwerkkonnektivität in einer Client-Anwendung.
  • Fehlende Konfigurationsinformationen, wenn kein Standard verwendet werden kann.

Nicht-fatale Fehler würden gehören:

  • Ein Server, auf dem eine einzige Sitzung aus irgendeinem Grund fehlschlägt, aber Sie können noch andere Kunden bedienen.
  • Ein sporadischer Fehler, wie verlorene Sitzung, wenn eine neue Sitzung eingerichtet werden kann.
  • Fehlende Konfigurationsinformationen, wenn ein Standardwert verwendet werden kann.

Andere Tipps

Ein Fehler ist fatal, wenn etwas fehlt oder eine Situation eintritt, für die die Anwendung einfach nicht fortgesetzt werden. Mögliche Beispiele sind eine fehlende erforderliche config.file oder wenn eine Ausnahme ‚sprudelt‘ und wird durch eine nicht behandelte Exception-Handler

gefangen

Ich würde fatal verwenden, wenn mein nächster Schritt ist für die Anwendung zu beenden, oder nur mehr nachfolgende Arbeit nicht tun. Wenn die Anwendung Teil einer Charge ist oder es laufen mehrere Prozesse, kann dies sinnvoll sein, für das Tracing, was passiert ist.

Wenn es eine Chance auf Heilung (beispielsweise Verlust der Netzwerkverbindung mit Wiederholungen für eine Weile) Ich würde nicht ein fatale verwenden.

Wenn ich von einem Haupt-Thread mehrere Service-Threads aktiviert haben und einer von ihnen ausfällt, weil einige schlechte Eingang, aber die Anwendung noch neue Anforderungen dienen kann, halte ich nicht für sie tödlich.

Um diese Antwort kurz und bündig machen, wenn Ihre Anwendung abstürzt, würde ich das fatal betrachten. Wenn Sie nicht zu einer wichtigen Ressource wie eine Datenbank oder einen gewünschten Dienst verbinden können, das wäre fatal. Insgesamt würde ich sagen, dass, wenn es Ihre Anwendung hält richtig vom Laufen und wirkt sich auf den Benutzer, ich es als ein schwerwiegender Fehler einstufen würde.

Aber der wichtigste Weg, um Fehler zu klassifizieren ist konsequent Faustregel zu folgen, wie Regel 69 in C ++ Coding Standards :

  

„Entwicklung einer praktischen, konsistente und rationale Fehler Politik früh im Design Handhabung und dann dabei bleiben.“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top