使用Log4j2记录春天(Logging Spring using Log4j2)

2019-09-01 18:08发布

我试图用Log4j2弹簧日志打印到文件和控制台。 我想这是我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代码去春来的相关事情。 我使用Apache的骆驼主类读取我的Spring配置并加载豆。

我究竟做错了什么? 谢谢!

编辑:我没有在任何输出(控制台或文件)获得春天日志。 但是,我能得到我在Java代码中创建日志。 我希望这个澄清会有所帮助。

Answer 1:

看着你的POM的依赖关系,你有这样的一个:SLF4J-log4j12。 这将导致对SLF4J API日志语句被路由到Log4j的-1.2实现。 你可能希望这些被路由到Log4j的-2.0实现。 您可以更换SLF4J-log4j12与log4j的-SLF4J-implement执行,然后再试一次?



Answer 2:

弹簧采用共记录1.X导致此问题,因此,如果你想拥有这个记录发送到Log4j的2,你需要在你的pom.xml添加依赖

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.1</version>
 </dependency>

请不要拆除共记录1.X依赖



文章来源: Logging Spring using Log4j2