2012-01-17 16 views
9

Tengo algunos problemas para colocar mi archivo log4j.properties en classpath. Puedo usarlo cuando estoy desarrollando (Eclipse Indigo) pero, cuando exporto mi aplicación como un JAR, no puedo.Problemas para poner log4.properties classpath

que he hecho con la mano un archivo MANIFEST.MF para el JAR exportados:

Manifest-Version: 1.0 
Main-Class: main.Program 
Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar 

Y luego con poner el JAR en esta organización de archivos:

folder 
    |-------- app.jar 
    |-------- lib 
      |--------- log4j.properties 
      |--------- log4j-1.2.15.jar 

Cuando trato de ejecutar app.jar, encuentran log4j.jar pero no log4j.properties:

log4j:WARN No appenders could be found for logger (main.Program). 
log4j:WARN Please initialize the log4j system properly. 

Mis log4j.pro piedades de archivos es la siguiente:

log4j.rootLogger=INFO, stdout, file 

PATTERN=[%d] [%p] [%c{1}]: %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=${PATTERN} 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.File=${logger_file_path} 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=${PATTERN} 

Respuesta

11

no pone el log4j.properties sí en la ruta de clase, pero el directorio que contiene ese archivo.

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

Da el mismo error – rnunes

+0

Ya he corregido el cambio de log4j.properties en la "carpeta" (donde existe el JAR) y cambio el class-path a ".lib/log4j-1.2.15.jar". Antes de eso, he probado varias rutas de carpeta a "lib" (por ejemplo,/lib /, lib /,/lib /) y ninguna de ellas funcionó. – rnunes

+0

Un hilo viejo, pero solo quiero agregar que este enfoque realmente funciona. Otra cosa buena acerca de este enfoque es que un usuario puede cambiar el nivel de registro si lo desea porque el archivo de configuración está fuera de cualquier contenedor. – arunskrish

1

Añadir log4j.properties a app.jar.

+0

Por ahora prefiero tenerlo externamente – rnunes

12

Hay tres formas que conozco.

  1. Añadir log4j.properties a app.jar
  2. Coloque el log4j.properties a la "carpeta" (donde existe el JAR) y cambiar la clase de trayectoria a .lib/log4j-1.2.15.jar.
  3. Ponga el log4j.properties en la carpeta llamada "conf" por ejemplo, y cambie la ruta de clases a ./conf/.

Lo he intentado, funciona.

+3

Muchas gracias. ¡Mi inglés es muy malo! –

17

una forma más de hacer esto: -Dlog4j.configuration=file:"./log4j.properties"

+1

Para log4j versión 2, use: -Dlog4j.configurationFile = file: "YourPathHERE/log4j2.xml" – DataMania

-1

intenta ejecutar:

Javar-jar -Dlog4j.configuration = file: "./" log4j.properties app.jar

0

I Intenté la respuesta de Jesper, y al principio no funcionó. Luego probé con

Class-Path: lib/ lib/log4j-1.2.15.jar 

Y funcionó después de eso.

Cuestiones relacionadas