使用Log4j2进行Spring Boot日志记录

时间:2017-07-14 22:17:12

标签: spring spring-boot log4j2

编写简单的POC来证明和测试Spring Boot和log4j2的兼容性。一旦成功,我将把它移到实际应用中。

请参考我的POC源代码: https://github.com/Dennyss/SpringBootLog4j2POC

我知道/阅读有关Spring版本和log4j2的兼容性: How to set up Spring Boot and log4j2 properly?

找到并尝试了此处描述的建议: Spring-Boot logging with log4j2?

但仍然无法正常工作。问题是应用程序日志和Spring日志都只打印到控制台。

请参考下面的maven依赖项(来自POC):

 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.6.2</version>
    </dependency>
</dependencies>

如果我不排除Spring的logback并且不添加boot-starter-log4j2,则应用程序日志将打印到应用程序文件,但Spring日志根本不打印。我觉得这个问题存在于依赖关系中。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

根据Spring Boot Logging文档,可以使用logging.config属性指定日志记录配置文件的位置。我注意到你的start.sh脚本正在传递-Dlog4j.configurationFile。通常,这对于直接Log4J 2集成就足够了,但Spring Boot使用logging.config

切换到此后,它会写入日志文件:

java -Dlogging.config=/share/LogPOC/log4j2.xml -cp poc.jar:libs/* com.poc.logger.Application