![](/img/trans.png)
[英]Logging : Log4j2 Implementation using Properties file in Spring Boot
[英]Logging Spring using Log4j2
我正在尝试使用Log4j2将spring日志打印到文件和控制台中。 我想这是我的Log4j2配置中的一个问题。 我无法让它发挥作用。 我在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>
这些是我在我的pom文件中的依赖项:(可能其中一些不是必需的)
<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>
我在Java代码中没有做任何与spring有关的事情。 我正在使用Apache Camel的Main类,它读取我的spring配置并加载bean。
我究竟做错了什么? 谢谢!
编辑:我没有在任何输出(控制台或文件)中获取spring日志。 但是,我能够在我的java代码中获取我创建的日志。 我希望这个澄清会有所帮助。
由spring引起的这个问题使用common-logging 1.X,所以如果你希望将这个日志记录路由到Log4j 2,你需要在你的pom.xml中添加依赖项
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.1</version>
</dependency>
不要删除您的common-logging 1.X依赖项
查看你的pom中的依赖项,你就有了这个:slf4j-log4j12。 这导致针对slf4j api的日志语句被路由到Log4j-1.2实现。 您可能希望将这些路由到Log4j-2.0实现。 你能用log4j-slf4j-impl替换slf4j-log4j12并再试一次吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.