java - 在 Spring Boot 中记录 : Log4j2 Implementation using log4j2. 属性文件

标签 java spring-boot log4j2

如果我指定,日志记录工作正常 '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.属性:

name=PropertiesConfig
appenders = console, file

appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{MM:dd HH:mm:ss.SSS} [%t] 
                                  [%level] [%logger{36}] - %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= %d{MM:dd HH:mm:ss.SSS} [%t] [%level] 
                              [%logger{36}] - %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

最佳答案

我不知道 Spring Boot 修改了 Log4j 2 用于定位配置文件的逻辑。事实上,我一直在开发一个使用 log4j2.yml 的 Spring Boot 服务。我用 log4j2.properties 替换了它,效果很好。 Log4j 的正常发现过程会在类路径上找到它。

实际上,我很惊讶指定 logging.config=src/main/resources/log4j2.properties 对您有用,因为 Spring Boot jar 通常不会包含“src”目录。

关于java - 在 Spring Boot 中记录 : Log4j2 Implementation using log4j2. 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605606/

相关文章:

java - 在不同的 Spring 上下文中加载属性

spring-boot - Spring Cloud 网关在过滤器中发送响应

java - 无法将类型 'java.lang.String' 的属性值转换为属性 'java.util.Date' : it is not exactly10characters long 所需的类型 'date'

java - 动态更新 fragment 调用

java - 无法使用 apache common io 中的比较器解析方法排序

spring-boot - Swagger OpenAPI v3 文件下载问题(SpringBoot)

hibernate - 如何使用log4j2禁用 hibernate 4输出?

java - Log4j2 + Java:以编程方式添加asyncLogger

java - 方法 getLogger() 不再是 log4j2 中 Logger 的成员?

java - 未从 JTable 中删除的行