java - example - configuración log4j a través de argumento(s) JVM
log4j2 json configuration example (6)
¿Qué variables debo establecer / pasar como argumentos a la JVM para que Log4j se ejecute correctamente? Y de manera adecuada quiero decir que no me quejo e imprimo en la consola. ¿Puedo ver un ejemplo típico?
Nota: Necesito evitar crear un archivo log4j.properties en la aplicación.
¿Tienes un archivo de configuración log4j? Solo haz referencia usando
-Dlog4j.configuration={path to file}
donde {ruta al archivo} debe estar precedido de un file:
En general, siempre que su archivo log4j.properties esté en classpath, Log4j debería simplemente recogerlo automáticamente en el arranque de JVM.
Esto parece haber cambiado (probablemente con log4j2) a:
-Dlog4j.configurationFile=file:C:/Users/me/log4j.xml
Ver: https://logging.apache.org/log4j/2.x/manual/configuration.html
La solución está usando el siguiente argumento de JVM:
-Dlog4j.configuration={path to file}
Si el archivo NO está en el classpath (en WEB-INF/classes
en el caso de Tomcat) pero en algún lugar de su disco, use file:
como
-Dlog4j.configuration=file:C:/Users/me/log4j.xml
Más información y ejemplos aquí: http://logging.apache.org/log4j/1.2/manual.html
Sé que esto ya está respondido, pero como dijo, esto no es exactamente lo que está buscando, me gustaría señalar la siguiente alternativa:
También puede usar una clase de configuración en lugar de las propiedades o el archivo xml.
-Dlog4j.configuratorClass=com.foo.BarConfigurator
Ver http://logging.apache.org/log4j/1.2/manual.html para más detalles.
Tarde en la fiesta ya que desde 2015, Log4J 1.x ha llegado a http://logging.apache.org/log4j/1.2/manual.html .
Log4J 2.x en adelante, la opción de JVM debería ser -Dlog4j.configurationFile=<filename>
PS <filename>
podría ser un archivo relativo a la ruta de clase sin el file:
como se sugiere en las otras respuestas.