¿Qué variables tengo que establecer / pasar como argumentos a la JVM para que log4j se ejecute correctamente? Y con apropiadamente quiero decir no quejarse e imprimir en la consola. ¿Puedo ver un ejemplo típico?
Nota: Necesito evitar crear un archivo log4j.properties en la aplicación.
Respuestas:
¿Tiene un archivo de configuración log4j? Solo referencialo usando
donde {ruta al archivo} debe tener el prefijo
file:
Editar: si está trabajando con log4j2, debe usar
Tomado de la respuesta https://stackoverflow.com/a/34001970/552525
fuente
{path to file}
necesita anteponersefile:
para que esto funcione.La solución está utilizando el siguiente argumento JVM:
Si el archivo NO está en el classpath (en el
WEB-INF/classes
caso de Tomcat) pero en algún lugar de su disco, usefile:
, comoMás información y ejemplos aquí: http://logging.apache.org/log4j/1.2/manual.html
fuente
-Dlogback.configurationFile=C:\logback-test.xml
-Dlog4j.debug
Esto parece haber cambiado (probablemente con log4j2) a:
Ver: https://logging.apache.org/log4j/2.x/manual/configuration.html
fuente
JAVA_PARAMS="-Dlog4j.configurationFile=classpath:log4j2-container.xml"
si Docker Image admite anular JAVA_PARAMS con env vars y el archivo está dentro del Jar.Sé que esto ya está respondido, pero como dijiste, esto no es exactamente lo que estás 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.
Ver http://logging.apache.org/log4j/1.2/manual.html para más detalles.
fuente
En general, siempre y cuando su archivo log4j.properties esté en el classpath, Log4j debería recogerlo automáticamente al iniciar JVM.
fuente
Tarde a la fiesta desde 2015, Log4J 1.x ha llegado a EOL .
Log4J 2.x en adelante la opción JVM debería ser
-Dlog4j.configurationFile=<filename>
PS
<filename>
podría ser un archivo relativo a la ruta de la clase sin lofile:
que se sugiere en las otras respuestas.fuente
La ruta relativa también está bien:
o
fuente
Si estás usando gradle. Puede aplicar el complemento de 'aplicación' y usar el siguiente comando
fuente