16 Stimmen

Wie erstelle ich einen neuen log4j ConsoleAppender im Code und nicht in der Konfiguration?

Ich möchte programmgesteuert eine neue log4j ConsoleAppender erstellen und fügen Sie es als ein Anhängsel zu einem Logger - wie gehe ich über die Instanziierung ein richtig - mit den folgenden scheint zu machen log4j beschweren - welche Setter muss ich verwenden, um es richtig zu konfigurieren?

// log4j complains of "No output stream or file set for the appender named [null]."
logger.addAppender(new ConsoleAppender());

Vermutlich ist es ein Fall von zu wissen, was auf der ConsoleAppender eingestellt, aber ich kann es nicht herausfinden. Ich nehme an, es gibt eine Möglichkeit, das Standard-Layout zu erhalten. Ich möchte nur eine standard ConsoleAppender, die an SysOut anhängt. Jede Anleitung geschätzt, danke.

31voto

mikej Punkte 63496

Sie müssen eine Writer auf dem Absender (und dann auch eine Layout um den nächsten Fehler zu vermeiden, den Sie sehen würden). Das bedeutet, dass Sie keine anonyme Instanz verwenden können, da Sie die Setter verwenden müssen, um den Appender zu konfigurieren. z.B.

ConsoleAppender ca = new ConsoleAppender();
ca.setWriter(new OutputStreamWriter(System.out));
ca.setLayout(new PatternLayout("%-5p [%t]: %m%n"));
logger.addAppender(ca);

Außerdem können Sie den Namen des Appenders mit festlegen:

ca.setName("My appender");

4voto

Ronald Wildenberg Punkte 30961

Dies scheint ein bekannt Ausgabe in log4j. Sie sollten in der Lage sein, dies zu beheben, indem Sie entweder activateOptions auf den Appender, bevor er dem Logger hinzugefügt wird, oder durch Verwendung eines parametrisierten Konstruktors für ConsoleAppender .

Welche Version verwenden Sie? Der Fehler scheint in einer ziemlich alten Version zu existieren.

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