Saltar al contenido

Custom ConfigurationFactory combinado con el archivo de configuración en log4j2

Mantén la atención ya que en este enunciado vas a hallar la respuesta que buscas.Este tutorial ha sido aprobado por nuestros especialistas para asegurar la calidad y veracidad de nuestro post.

Solución:

Resolví este problema llamando

System.setProperty("log4j.configurationFactory", CustomConfigurationFactory.class.getName());

Como alternativa, utilice este parámetro de inicio de JVM:
-Dlog4j.configurationFactory=factory.CustomConfigurationFactory

en vez de

ConfigurationFactory.setConfigurationFactory(new CustomConfigurationFactory());

antes de acceder a la LogManager por primera vez.

EDITAR: También puede configurar este ajuste en el archivo log4j2.component.properties.

Contenido:

log4j.configurationFactory=factory.CustomConfigurationFactory

Al hacerlo, puede estar seguro de que esta configuración se aplica antes de que se carguen las clases de registrador y evitar los problemas potenciales del orden de inicialización de clases.

Si busca el uso de org.apache.logging.log4j.util.PropertiesUtil en las fuentes de Log4j2 puede encontrar todas las configuraciones que se pueden configurar de esa manera.

Mientras analizaba / depuraba el problema, noté que mi ConfigurationFactory se creó, pero no se usó para obtener la configuración.

Finalmente encontré este pasaje en los documentos, que lo explica todo (probablemente no llamamos setConfigurationFactory Suficientemente pronto):

Durante la inicialización, Log4j 2 buscará las fábricas de configuración disponibles y luego seleccionará la que desea usar. La fábrica de configuración seleccionada crea la configuración que utilizará Log4j. Así es como Log4j encuentra las fábricas de configuración disponibles:

  1. Se puede establecer una propiedad del sistema denominada “log4j.configurationFactory” con el nombre de ConfigurationFactory que se utilizará.
  2. Se puede llamar a ConfigurationFactory.setConfigurationFactory(ConfigurationFactory) con la instancia de ConfigurationFactory que se utilizará. Esto debe llamarse antes de cualquier otra llamada a Log4j.
  3. Se puede agregar una implementación de ConfigurationFactory al classpath y configurarla como complemento en la categoría “ConfigurationFactory”. La anotación de pedido se puede utilizar para especificar la prioridad relativa cuando se encuentran varias fábricas de configuración aplicables.

Te mostramos comentarios y puntuaciones

Si te ha sido provechoso nuestro artículo, agradeceríamos que lo compartas con más entusiastas de la programación así nos ayudas a dar difusión a nuestro contenido.

¡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 *