Saltar al contenido

¿Cómo puedo cambiar la ubicación predeterminada de log4j2.xml en Java Spring Boot?

Ya no tienes que indagar más por otros sitios ya que llegaste al sitio indicado, contamos con la solución que deseas y sin problemas.

Solución:

Como se especifica en la documentación de referencia de Spring, el logging.config La propiedad no se puede establecer entre las propiedades de la aplicación, ya que se leen después de que el registro ya se haya inicializado.

La solución es proporcionar la ruta a la configuración de registro externo de esta manera:

java -Dlogging.config='/path/to/log4j2.xml' -jar app-current.jar

Como se menciona en la documentación de log4j2 aquí, puede incluir un archivo llamado log4j2.component.properties en su carpeta de recursos (o en cualquier parte del classpath) y dentro de ese archivo, puede proporcionar el nombre de la ubicación del archivo (o un nuevo nombre de archivo) de esta manera:

log4j.configurationFile=path/to/log4j2.xml

o

log4j.configurationFile=classpath:log4j2-custom.xml (if the file is on the classpath)

Alternativamente, puede proporcionar la ubicación del archivo de configuración a través del context-param campos de web.xml como se menciona aquí, pero no he probado esa opción

(Esto también funciona con Spring Boot)

La respuesta de micpalmia es absolutamente correcta.

Necesitaba poner la configuración fuera del classpath. No quería pasar el archivo de configuración como parámetro. Así que puse una configuración de registro muy simple en los recursos de classpath e hice que la aplicación Spring Boot reconfigurara el registro al inicio, así:

@SpringBootApplication
public class Application implements CommandLineRunner 
    public static void main(String[] args) throws Exception 
        SpringApplication.run(Application.class, args);
    

    @Override
    public void run(String... param) throws UnsupportedEncodingException 
        Configurator.initialize(null, "config/log4j2.xml");
        // ...
    

Este enfoque tiene una desventaja significativa: todo el proceso de inicio de la aplicación no se registrará como configurado externamente. Pero una vez que se ejecuta el código personalizado, el registrador funciona según lo previsto. Si bien es posible que no, creo que este es un compromiso con el que puedo vivir.

Te mostramos reseñas y puntuaciones

Más adelante puedes encontrar las observaciones de otros creadores, tú igualmente puedes dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *