¿Cómo puedo crear 2 archivos de registro separados con un archivo de configuración log4j?

No puedo entender cómo configurar mi log4j para que mi debugLog y mi reportsLog estén separados el uno del otro (no son aditivos). ¿Por qué es así, que en la configuración siguiente, el reportsLog siempre está vacío?

log4j.rootLogger=TRACE, stdout, debugLog log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.debugLog=org.apache.log4j.FileAppender log4j.appender.debugLog.File=logs/debug.log log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.reportsLog=DEBUG,reportsLog log4j.appender.reportsLog=org.apache.log4j.FileAppender log4j.appender.reportsLog.File=logs/reports.log log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

Y aquí está mi código de Java:

 package test; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class HelloLogger { static final Logger debugLog = Logger.getLogger("debugLog"); static final Logger resultLog = Logger.getLogger("reportsLog"); public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); debugLog.debug("Hello debugLog message"); resultLog.debug("Hello reportsLog message"); } } 

Pruebe la siguiente configuración:

 log4j.rootLogger=TRACE, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.debugLog=org.apache.log4j.FileAppender log4j.appender.debugLog.File=logs/debug.log log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.reportsLog=org.apache.log4j.FileAppender log4j.appender.reportsLog.File=logs/reports.log log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.category.debugLogger=TRACE, debugLog log4j.additivity.debugLogger=false log4j.category.reportsLogger=DEBUG, reportsLog log4j.additivity.reportsLogger=false 

Luego configure los registradores en el código de Java en consecuencia:

 static final Logger debugLog = Logger.getLogger("debugLogger"); static final Logger resultLog = Logger.getLogger("reportsLogger"); 

¿Desea que la salida vaya a stdout ? Si no, cambie la primera línea de log4j.properties a:

 log4j.rootLogger=OFF 

y deshacerse de las líneas stdout .

Modifique su archivo log4j.properties consecuencia:

 log4j.rootLogger=TRACE,stdout ... log4j.logger.debugLog=TRACE,debugLog log4j.logger.reportsLog=DEBUG,reportsLog 

Cambie los niveles de registro para cada registrador dependiendo de sus necesidades.