Warum ist ConsoleAppender werfen "keine Ausgabe-stream oder Datei-set für die appender mit dem Namen [null]"?
Ich hab ein Problem mit log4j ConsoleAppender
:
Wenn ich die Initialisierung so:
ConsoleAppender ca = new ConsoleAppender();
ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
gibt es einen Fehler und bricht die Protokollierung.
Fehler Ausgang:
log4j:ERROR No output-stream oder Datei-set für die appender mit dem Namen [null].
Wenn ich die Initialisierung so funktioniert:
ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
Hat jemand Erfahrung mit diesem Problem? Ich kann es nicht finden in der Bugzilla-repository, aber wenn es effektiv ein Problem ist, wäre es ziemlich offensichtlich!
Vielleicht bin ich an der falschen Stelle suchen?
Relevante code:
import org.apache.log4j.*;
public class ConsoleAppenderIssue {
private static Logger logger = Logger.getLogger(ConsoleAppenderIssue.class);
public static void main(String [] args) {
ConsoleAppender ca = new ConsoleAppender();
ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
logger.addAppender(ca);
logger.info("log something");
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sehen, warum dies geschieht, wenn Sie Blick auf die Quelle für ConsoleAppender:
Können Sie sehen, dass
ConsoleAppender(Layout)
gehtSYSTEM_OUT
als Ziel, und auch, dass es AnrufeactivateOptions
nach der Einstellung des Layouts und das Ziel.Wenn Sie
setLayout
sich selbst, dann müssen Sie auch explizit das Ziel gesetzt, und rufen SieactivateOptions
.