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:
- Se puede establecer una propiedad del sistema denominada “log4j.configurationFactory” con el nombre de ConfigurationFactory que se utilizará.
- 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.
- 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.