2012-10-05 48 views
14

que tienen un archivo JAR con el siguiente Manifiestolog4j.properties de carga con JAR

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 este 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 el manifiesto de este archivo

Class-Path: . lib/log4j-1.2.17.jar 
+0

Dup: http://stackoverflow.com/questions/8897528/problems-to-put-log4-properties-classpath – Vadzim

Respuesta

9

Propiedades doesn' ir en la ruta de clase, debe proporcionar y llamada desde el código como se muestra here.

EDIT: Con la estructura de directorios se llama así:

PropertyConfigurator.configure("log4j.properties"); 

Edit2:

Además, debe proporcionar 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 más fino controle el registro, elimine la primera línea (root looger) y coloque el segundo donde en vez de [logger-name] coloque el paquete superior para que todas las clases se inserten e ese paquete puede usar el registro.

Puede definir múltiples appenders y asignarlos a diferentes clases de esa manera.

12

También puede iniciar la JVM con el argumento:

-Dlog4j.configuration=file:"./your/properties/path/log4j.properties" 

para especificar la ubicación arbitraria de sus propiedades de registro externos. Lo usé mucho en un proyecto en particular.

+0

'log4j.configuration 'es para xml config – Vadzim

+3

Bueno, amigo mío, funciona muy bien con el archivo de propiedades. Pruébalo y mira. – Less

+0

Las versiones de jar utilizadas: log4j-1.2.14, slf4j-api-1.5.8, slf4j-log4j12-1.5.8 – Less

0

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 usted puede intentar poner fuera y dar camino correcto en getResourceAsStream("resources/log4j.properties") método

Cuestiones relacionadas