日志记录:在 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 打印myabtis sql语句

Spring Boot - 日志记录

Spring Boot AOP记录用户操作日志

Spring Boot 日志记录中的 ClassCastException

日志记录:在 Spring Boot 中使用属性文件实现 Log4j2

通过环境变量在 Spring Boot 中设置日志记录级别