In meiner Organisation haben wir einige Regeln / Richtlinien zur Protokollierung zusammengestellt, die ich gerne wissen möchte, ob Sie sie ergänzen oder kommentieren können.
Wir verwenden Java, aber Sie können allgemein Kommentare zu Anmelderegeln und Ratschlägen abgeben
Verwenden Sie die richtige Protokollierungsstufe
- FEHLER: Etwas ist sehr schief gelaufen und muss sofort behoben werden
- WARNUNG: Der Vorgang kann ohne Korrektur fortgesetzt werden. Die Anwendung sollte dieses Niveau tolerieren, aber die Warnung sollte immer untersucht werden.
- INFO: Information, dass ein wichtiger Prozess abgeschlossen ist
- DEBUGGEN. Wird nur während der Entwicklung verwendet
Stellen Sie sicher, dass Sie wissen, was Sie protokollieren.
Vermeiden Sie, dass die Protokollierung das Verhalten der Anwendung beeinflusst
Die Funktion der Protokollierung sollte darin bestehen, Meldungen in das Protokoll zu schreiben.
- Protokollnachrichten sollten beschreibend, klar, kurz und präzise sein.
Bei der Fehlerbehebung wird eine Unsinnmeldung nicht häufig verwendet.
- Stellen Sie die richtigen Eigenschaften in log4j
Setzen Sie ein, dass die richtige Methode und Klasse automatisch geschrieben wird.
Beispiel:
Datendatei -web
log4j.rootLogger=ERROR, DATEDFILE
log4j.logger.org.springframework=INFO
log4j.logger.waffle=ERROR
log4j.logger.se.prv=INFO
log4j.logger.se.prv.common.mvc=INFO
log4j.logger.se.prv.omklassning=DEBUG
log4j.appender.DATEDFILE=biz.minaret.log4j.DatedFileAppender
log4j.appender.DATEDFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATEDFILE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%C{1}.%M] - %m%n
log4j.appender.DATEDFILE.Prefix=omklassning.
log4j.appender.DATEDFILE.Suffix=.log
log4j.appender.DATEDFILE.Directory=//localhost/WebSphereLog/omklassning/
- Protokollwert.
Bitte protokollieren Sie die Werte aus der Anwendung.
- Protokollpräfix.
Geben Sie an, von welchem Teil der Anwendung aus die Protokollierung geschrieben wird, vorzugsweise mit einem für das Projekt vereinbarten Präfix, z PANDORA_DB
- Die Menge an Text.
Achten Sie darauf, dass nicht zu viel Protokolltext angezeigt wird. Dies kann die Leistung der App beeinflussen.
- Protokollierungsformat:
-Es gibt verschiedene Varianten und Methoden, die mit log4j verwendet werden können, aber wir möchten eine einheitliche Verwendung des folgenden Formats, wenn wir uns mit Ausnahmen anmelden:
logger.error("PANDORA_DB2: Fel vid hämtning av frist i
TP210_RAPPORTFRIST", e);
Im obigen Beispiel wird davon ausgegangen, dass wir die log4j-Eigenschaften so festgelegt haben, dass die Klasse und die Methode automatisch geschrieben werden.
Verwenden Sie immer einen Logger und nicht Folgendes:
System.out.println(), System.err.println(), e.printStackTrace()
Wenn die Web-App unser Framework verwendet, können Sie sehr detaillierte Fehlerinformationen von EJB erhalten, wenn Sie try-catch im Handler verwenden und gemäß dem obigen Modell protokollieren:
In unserem Projekt verwenden wir dieses Konvertierungsmuster, mit dem Methoden- und Klassennamen automatisch ausgeschrieben werden. Hier verwenden wir zwei verschiedene Muster für die Konsole und für den datierten Dateipuffer:
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.DATEDFILE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
In den obigen Beispielen werden Methode und Klasse ausgeschrieben. In der Konsole wird auch unsere Zeilennummer eingetragen.
toString()
Bitte haben Sie eine toString()
für jedes Objekt. EX:
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" DwfInformation [ ");
sb.append("cc: ").append(cc);
sb.append("pn: ").append(pn);
sb.append("kc: ").append(kc);
sb.append("numberOfPages: ").append(numberOfPages);
sb.append("publicationDate: ").append(publicationDate);
sb.append("version: ").append(version);
sb.append(" ]");
return sb.toString();
}
anstelle einer speziellen Methode, die diese Ausgaben machen
public void printAll()
{
logger.info("inbet: " + getInbetInput());
logger.info("betdat: " + betdat);
logger.info("betid: " + betid);
logger.info("send: " + send);
logger.info("appr: " + appr);
logger.info("rereg: " + rereg);
logger.info("NY: " + ny);
logger.info("CNT: " + cnt);
}
Gibt es also irgendetwas, das Sie hinzufügen, kommentieren oder in Frage stellen können, wenn Sie die Protokollierung verwenden? Sie können jederzeit antworten oder kommentieren, auch wenn es sich nicht um Java handelt. Java und log4j sind nur Beispiele dafür, wie dies begründet ist.