java - example - propertyconfigurator
Cargue log4j.properties con JAR (3)
El archivo de propiedades no entra en classpath, debe proporcionarlo y llamarlo desde el código como se muestra aquí .
EDITAR: con la estructura de tu directorio lo llamas así:
PropertyConfigurator.configure("log4j.properties");
EDIT2:
Además, debe proporcionar un appender para ello:
log4j.rootLogger=DEBUG, Appender1
log4j.logger.[logger-name]=level, Appender1
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Si desea un control más preciso sobre el registro, elimine la primera línea (enrutador raíz) y coloque el segundo en lugar de [nombre-registrador] para colocar el paquete superior para que todas las clases dentro de ese paquete puedan usar el registro.
Puede definir múltiples appenders y asignarlos a diferentes clases de esa manera.
Esta pregunta ya tiene una respuesta aquí:
- Problemas para poner log4.properties classpath 6 respuestas
Tengo un archivo jar con el siguiente Manifiesto
Manifest-Version: 1.0
Created-By: 1.7.0_07 (Oracle Corporation)
Main-Class: test.Main
Class-Path: ./log4j.properties lib/log4j-1.2.17.jar
Corro la clase de la siguiente manera
java -jar test.jar
Y esta es mi carpeta
lib
log4j.properties
test.jar
¿Por qué no puedo ver el archivo de propiedades log4j? Esto es lo que veo
log4j:WARN No appenders could be found for logger (test.Main).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Gracias
SOLUCIÓN: cambió mi classhpath en MANIFEST a este
Class-Path: . lib/log4j-1.2.17.jar
También puede iniciar su JVM con argumento:
-Dlog4j.configuration=file:"./your/properties/path/log4j.properties"
para especificar la ubicación arbitraria de sus propiedades de registro externas. Lo usé mucho en un proyecto en particular.
PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties"))
me funcionó correctamente, pero básicamente debe colocar el archivo de propiedades de Log4j en la carpeta del Código fuente (al lado de la clase Java).
O puede intentar poner afuera y dar la ruta adecuada en el getResourceAsStream("resources/log4j.properties")