Solución:
Log4j
por defecto busca un archivo llamado log4j.properties
o log4j.xml
en el classpath.
Puede controlar qué archivo utiliza para inicializarse configurando las propiedades del sistema como se describe aquí (busque la sección “Procedimiento de inicialización predeterminado”).
Por ejemplo:
java -Dlog4j.configuration=customName ....
Causará log4j
para buscar un archivo llamado customName en la ruta de clases.
Si tiene problemas, me parece útil activar log4j.debug:
-Dlog4j.debug
Imprimirá en System.out mucha información útil sobre qué archivo usó para inicializarse, qué registradores / appenders se configuraron y cómo, etc.
El archivo de configuración puede ser un archivo de propiedades java o un archivo xml. Aquí hay una muestra del formato de archivo de propiedades tomado de la página de documentación de introducción de log4j:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Si bien configurar log4j correctamente es excelente para proyectos “reales”, es posible que desee una solución rápida y sucia, por ejemplo, si solo está probando una nueva biblioteca.
Si es así, una llamada al método estático.
org.apache.log4j.BasicConfigurator.configure();
configurará el registro básico en la consola y los mensajes de error desaparecerán.
Si simplemente te deshaces de todo (por ejemplo, si estás en pruebas)
org.apache.log4j.BasicConfigurator.configure(new NullAppender());