日志记录:在 Spring Boot 中使用 log4j2.properties 文件实现 Log4j2
Posted
技术标签:
【中文标题】日志记录:在 Spring Boot 中使用 log4j2.properties 文件实现 Log4j2【英文标题】:Logging : Log4j2 Implementation using log4j2.properties file in Spring Boot 【发布时间】:2019-08-31 12:03:18 【问题描述】:如果我指定,日志记录工作正常 'logging.config = src/main/resources/log4j2.properties' 在我的 application.properties 文件中。
是否有任何其他解决方法可以解决 spring boot 自动检测 log4j2.properties 并且不需要在 application.properties 文件中指定 'logging.config = src/main/resources/log4j2.properties' ..?
Spring Boot 会自动检测类路径中的 log4j2.xml、log4j2.json 文件,但在我的情况下不会检测 log4j2.properties 文件
我的 pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>
log4j2.properties:
name=PropertiesConfig
appenders = console, file
appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %dMM:dd HH:mm:ss.SSS [%t]
[%level] [%logger36] - %msg%n
appender.file.type = File
appender.file.name = FileAppender
appender.file.fileName=/home/ubuntu/application.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern= %dMM:dd HH:mm:ss.SSS [%t] [%level]
[%logger36] - %msg%n
loggers=file
logger.file.name=com.project
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = FileAppender
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = ConsoleAppender
注意:我使用的 Spring Boot 版本是 2.1.3.RELEASE
参考:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html
【问题讨论】:
我认为不需要特殊配置。您可以在此处找到使用属性文件配置 log4j2 的 maven 示例:studytonight.com/post/… 【参考方案1】:我不知道 Spring Boot 修改了 Log4j 2 用于定位配置文件的逻辑。事实上,我一直在开发一个使用 log4j2.yml 的 Spring Boot 服务。我用 log4j2.properties 替换了它,它工作正常。 Log4j 的正常发现过程会在类路径上找到它。
实际上,我很惊讶指定 logging.config=src/main/resources/log4j2.properties
为您工作,因为 Spring Boot jar 通常不会在其中包含“src”目录。
【讨论】:
【参考方案2】:也可以这样用:
java -Dlog4j.configurationFile=log4j2.xml -jar xxxx-app.jar
参考: https://logging.apache.org/log4j/2.x/manual/configuration.html
【讨论】:
以上是关于日志记录:在 Spring Boot 中使用 log4j2.properties 文件实现 Log4j2的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 日志记录中的 ClassCastException