2011-01-28 19 views
5

Estoy usando Log4j en mis aplicaciones. log4j.properties se coloca en un Jar que está en classpath. Este archivo de configuración se está utilizando y funciona bien la mayoría de las veces.Práctica recomendada para configurar las propiedades de Log4j Ruta

Pero a veces, las sentencias de registro que se generan no son según el archivo de configuración.

Según tengo entendido, esto se debe a que el archivo de propiedades se obtiene de la ruta de la clase. Cualquiera que sea el primer archivo de propiedades, es capturado y utilizado por log4j. Por lo tanto, a veces obtenemos las declaraciones de registro diferentes de las configuradas en el archivo de propiedades.

En el caso, la razón anterior es cierto, entonces pienso, tenemos que especificar el archivo de configuración específicamente por una de las siguientes maneras:

  1. Especificar el uso de las propiedades del sistema: -Dlog4j.configuration = log4j .properties
  2. Inicializando el servlet Log4jInit.

Por favor, sugiera cuál podría ser el mejor enfoque.

Respuesta

6

En mi aplicación estoy usando ${user.home} dir para almacenar log4j.properties y usando hormigueo lo estamos leyendo. será plataforma independiente. también puede pasar uno con compilación en classpath pero leer desde $ {user.home} es un mejor enfoque, usted o cualquier persona no técnica puede acceder fácilmente a él.

también se puede utilizar

dinámico archivo de registro Ubicación

Muchas personas se quejan de que Log4j le obliga a código el lugar donde se guardarán los registros. En realidad, es posible elegir dinámicamente la ubicación del archivo de registro, especialmente si usa la técnica de sustitución de la propiedad $ {log.dir} anterior. Así es como:

String dynamicLog = // log directory somehow chosen... 
Properties p = new Properties(Config.ETC + "/log4j.properties"); 
p.put("log.dir", dynamicLog); // overwrite "log.dir" 
PropertyConfigurator.configure(p); 

también vemos

+0

¡Gracias! Eso podría ayudar. ¿Puede confirmar también si mi comprensión es correcta, la razón para obtener declaraciones de registro "no deseadas"? –

+0

Sí, parece que está leyendo conf diferente. cuando se comporta de manera diferente. –

+0

¡Gracias! Una pregunta más. ¿Log4j puede usar múltiples archivos de configuración? En mi caso, está ocurriendo un registro adicional, lo que significa que se lee el archivo de propiedades original, junto con la configuración adicional. –

2

Durante la búsqueda de elementos en la ruta de clase del primera ejemplo de archivo con una estera se usa el nombre ching. Entonces agrega tu .jar al frente.

set CLASSPATH=myfile.jar;%CLASSPATH% 
Cuestiones relacionadas