2012-08-07 12 views
5

In Java konnte man mit System.out.println() eine leere Zeile drucken, aber wie funktioniert es mit log4j in einer Logdatei? Dort möchte ich auch eine oder mehrere leere Zeilen in der Logdatei haben.Log4J leere Zeile in Logdatei drucken

ich schon gelesen, die folgenden Städte: log4j how to append blank line

Aber das ist nicht wirklich hilfreich, weil mit

logger.debug("\n"); 
logger.debug(""); 

Sie aber auch anderen Informationen wie Zeit keine Meldung drucken und so weiter (das Layout der Logger) werden immer noch in der Logdatei gespeichert. Aber ich möchte nur eine leere Zeile haben. Kann mir bitte jemand helfen?

Antwort

8

Log4j wurde nicht zum Schreiben von Leerzeilen entwickelt.

Sie können diese Option nicht im Logger finden, da der Logger unabhängig von seinen Appendern ist, die in eine Datei oder die Konsole oder etwas anderes schreiben.

Ich denke, dass Sie Ihren benutzerdefinierten FileAppender erstellen müssen, der die Protokollierungsnachricht vor dem Schreiben überprüft. Wenn Sie message.equals("\n"); anhängen, fügen Sie eine leere Zeile ohne das Layout hinzu, indem Sie auf die Datei zugreifen und die normale Protokollierung mit dem Layout überspringen. dann können Sie Logger.debug("\n");

verwenden Es ist auch eine schlechte Praxis, leere Zeilen hinzuzufügen. Es ist ähnlich, Ihre Log-Nachricht über mehrere Zeilen zu teilen. Sie möchten alle Ihre Logmeldungen in einer Zeile haben, so dass sie für LogViewer-Tools wie chainsaw oder OtrosLogViewer leicht zu parsen sind. Eine Ausnahme sind Stacktraces.

2

Erstellen Sie Ihren eigenen Appender mit leerem Layout und einen Logger, der diesen Appender verwendet. Schreiben Sie dann die leere Zeile mit diesem Logger. Stellen Sie sicher, dass das Attribut additivity für logger auf false gesetzt ist, damit der Root-Logger die Nachricht nicht mit der Formatierung seiner Appender schreibt.