请参考我的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日志根本不打印。我觉得这个问题存在于依赖关系中。感谢任何帮助。
答案 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