java - moduleexception - libreria org apache commons logging logfactory
Logging Spring utilizando Log4j2 (2)
Estoy intentando usar Log4j2 para imprimir los registros de Spring en un archivo y una consola. Supongo que es un problema en mi configuración de Log4j2. No he podido hacerlo funcionar. Tengo esta configuración en mi archivo log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5">
<properties>
<property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property>
<property name="filename">${env:MY_ROOT}/logs/mylog.log</property>
<property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property>
</properties>
<appenders>
<appender name="Console" type="Console" target="SYSTEM_OUT">
<layout type="PatternLayout" pattern="${patternlayout}" />
</appender>
<appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true"
append="true">
<layout type="PatternLayout" pattern="${patternlayout}" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="50 MB" />
</Policies>
<DefaultRolloverStrategy max="30" />
</appender>
<appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128">
<appender-ref ref="File" />
</appender>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Console" />
<appender-ref ref="AsynchFile" />
</root>
<logger name="org.springframework.beans">
<appender-ref ref="Console" />
<appender-ref ref="AsynchFile" />
</logger>
</loggers>
</configuration>
Estas son las dependencias que tengo en mi archivo pom: (probablemente algunas de ellas no son necesarias)
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.0-beta5</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.0.0.beta3</version>
</dependency>
No estoy haciendo nada relacionado con la primavera en mi código de Java. Estoy usando la clase Main de Apache Camel que lee mi configuración de primavera y carga los beans.
¿Qué estoy haciendo mal? ¡Gracias!
Edición: no obtengo registros de primavera en ninguna salida (consola o archivo). Sin embargo, puedo obtener los registros que creo en mi código java. Espero que esta aclaración ayude.
Este problema se debe a que Spring utiliza el registro común 1.X, por lo que si desea que este registro se enrute a Log4j 2, necesita agregar dependencias en su pom.xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.1</version>
</dependency>
No elimine sus dependencias 1.X de registro común
Mirando las dependencias en su pom, tiene este: slf4j-log4j12. Esto hace que las declaraciones de registro contra la API slf4j se enruten a la implementación de Log4j-1.2. Probablemente desee que estos se dirijan a la implementación de Log4j-2.0. ¿Se puede reemplazar slf4j-log4j12 con log4j-slf4j-impl y volver a intentarlo?