Wie schreibt man verschiedene Informationen in zwei verschiedene Dateien mit dem Logger von log4j?

Ich möchte mit meinem Logger in zwei verschiedene Dateien schreiben, was folgendermaßen lautet:

public static final Logger logger = Logger.getLogger(Adapt.class); PropertyConfigurator.configure("log4j.properties"); 

Die Datei log4j enthält:

 log4j.rootLogger=DEBUG, FA #File Appender log4j.appender.FA=org.apache.log4j.FileAppender log4j.appender.FA.File=temp.ppr log4j.appender.FA.layout=org.apache.log4j.PatternLayout log4j.appender.FA.append=false log4j.appender.FA.layout.ConversionPattern= %m%n 

Ist es überhaupt möglich, den Logger zu verwenden, um anderen Text einfach in zwei verschiedene Dateien zu schreiben?

Wenn nicht, gibt es eine Möglichkeit, das mit zwei Loggern zu tun? (Ich habe das probiert und bekam Probleme wegen der function configure die statisch ist.)

Vielen Dank.

Definieren Sie einfach eine zweite Logger-Variable:

 Logger otherLogger = Logger.getLogger("OTHER_LOGGER"); 

Definieren Sie eine Konfiguration dafür (beachten Sie die log4j.logger .OTHER_LOGGER-Syntax siehe log4j.rootLogger, wie von user623395 und venkatesh Dodla hervorgehoben ):

 log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender log4j.additivity.OTHER_LOGGER = false #File Appender log4j.appender.OtherAppender=org.apache.log4j.FileAppender log4j.appender.OtherAppender.File=temp2.ppr log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout log4j.appender.OtherAppender.append=false log4j.appender.OtherAppender.layout.ConversionPattern= %m%n 

und protokolliere deinen anderen Text wie gewohnt:

 logger.debug("My normal log"); otherLogger.info("My special text"); 

es hat für mich funktioniert. Meine Protokolldatei:

 # log4j.properties log4j.rootLogger=DEBUG,hfis,stdout #For second log log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender log4j.additivity.OTHER_LOGGER = false #File Appender log4j.appender.OtherAppender=org.apache.log4j.FileAppender log4j.appender.OtherAppender.File=C:\\Legacy.log log4j.appender.OtherAppender.ImmediateFlush=true log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout log4j.appender.OtherAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n log4j.rootCategory=ERROR log4j.rootLogger.additivity=false log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.hfis=org.apache.log4j.RollingFileAppender log4j.appender.hfis.Threshold=DEBUG log4j.appender.hfis.file=C:\\hfis.log log4j.appender.hfis.ImmediateFlush=true log4j.appender.hfis.MaxFileSize=5MB log4j.appender.hfis.layout=org.apache.log4j.PatternLayout log4j.appender.hfis.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n # R is the RollingFileAppender that outputs to a rolling log log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Threshold=DEBUG # Define a pattern layout for the file. log4j.appender.mystdout.layout=org.apache.log4j.PatternLayout log4j.appender.mystdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} %-5p: %m%n

und meine Protokollvariablen sind

 final static Logger log = Logger.getLogger("hfis"); final static Logger log2 = Logger.getLogger("OTHER_LOGGER"); 

Um temp2.ppr zu erstellen, ändern Sie von

 log4j.OTHER_LOGGER=DEBUG, OtherAppender 

zu

 log4j.**logger**.OTHER_LOGGER=DEBUG, OtherAppender