Ich hätte gerne zwei verschiedene log4j
Logger in meiner Anwendung, und da es keine "Überschneidung" zwischen den Inhalten gibt, die sie in ihre Protokolle schreiben.log4j.properties Datei - mehrere Logger in der gleichen Klasse
Zum Beispiel:
- Logger1 schreibt Ereignisse INFO auf einen Satz von Systemereignissen im Zusammenhang
- Logger2 schreibt Ereignisse INFO zu einem anderen Satz von Systemereignissen im Zusammenhang
- Kein Eintrag im Protokoll zweimal erscheinen sollte
Mein log4j.properties ist wie folgt:
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Mein Java-Code ist wie folgt:
public static void main(String[] args) {
PropertyConfigurator.configure(Client.class
.getResource("/log4j.properties"));
xdasLogger = Logger.getLogger("xdasLogger");
logger = Logger.getLogger(Client.class);
logger.info("normal");
xdasLogger.info("xdas");
}
Aber meine Konsolenausgabe ist wie folgt:
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
xdas
Beachten Sie, dass "XDAS" sowohl logger
angemeldet ist und xdasLogger
, was unerwünscht ist.
Weiß jemand, welche Änderungen ich in meine log4j.properties einfügen muss, um die Konsolenausgabe zu ändern?
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
Solution (ab akzeptierte Antwort genommen):
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Ihre Lösung scheint absolut korrekt, funktioniert aber nicht für mich. Ich habe diese Zeilen zu '/ etc/spark/conf/log4j.properties' hinzugefügt, ist das nicht korrekt? Muss ich 'Spark' neu starten (oder irgendetwas anderes zurücksetzen), damit aktualisierte Eigenschaften aufgenommen werden? –
Haben Sie die Protokollnamen verwendet, die bereits in der Datei log4j.properties für Spark konfiguriert sind? Oder vielleicht verwendet Spark log4j2, das eine andere Eigenschaftendatei hat - log4j2.properties? Wenn Sie mehr Details geben können, kann ich versuchen zu helfen – kjp
** @ kjp ** so weit ich weiß, "Spark 2.3.0" (veröffentlicht am 28. Februar 2018) verwendet immer noch 'log4j' wie gesagt [hier] (https : //spark.apache.org/docs/latest/configuration.html#configuring-logging). Was meinen Sie mit * "Loggernamen, die bereits in der log4j.properties für Spark konfiguriert sind" *? In den 'log4j.properties' Dateien sehe ich Zeilen wie diese' log4j.rootCategory = WARN, console' & 'log4j.appender.console = org.apache.log4j.ConsoleAppender' –