es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reemplazar la configuración de log4j2 en tiempo de ejecución

Tengo una aplicación war con un archivo log4j2.properties en ella. Una vez que el servicio está iniciando, me gustaría cambiar esta configuración de registro predeterminada de forma programática desde un archivo .properties externo.

Utilizo un código similar a este

String log4jConfigFile = System.getProperty("user.dir") + File.separator + "log4j2.xml";
ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4jConfigFile));
Configurator.initialize(null, source);

Pero parece que una vez que el contexto de registro se inicializa, no se puede cambiar, al menos de esa manera.
¿Existe alguna forma de reemplazar la configuración actual de registro desde un archivo externo log4j2.properties en tiempo de ejecución, una vez que el contexto de registro se haya inicializado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible reemplazar la configuración actual del registro desde un archivo externo log4j2.properties en tiempo de ejecución. En lugar de utilizar el método Configurator.initialize, puede utilizar el método LogManager.getContext para recuperar el contexto del registrador y luego modificar su configuración. Aquí hay un ejemplo de fragmento de código:

    // Cargar el archivo externo log4j2.properties
    String externalConfigFile = System.getProperty("user.dir") + File.separator + "external-log4j2.properties";
    ConfigurationSource source = new ConfigurationSource(new FileInputStream(externalConfigFile));
    
    // Recuperar el contexto del registrador
    LoggerContext context = (LoggerContext) LogManager.getContext(false);
    
    // Reconfigurar el contexto del registrador con el archivo externo log4j2.properties
    context.setConfigLocation(source.getLocation());
    

    Este fragmento de código carga un archivo externo log4j2.properties, recupera el contexto del registrador y luego reconfigura el contexto del registrador con el archivo externo. Esto debería reemplazar la configuración actual del registro con la nueva del archivo externo. Tenga en cuenta que este código debe ejecutarse antes de realizar cualquier declaración de registro, por lo que puede ser necesario modificar la secuencia de inicio de su aplicación.

Comments are closed.