java - Log4j 在写入文件时跳过内容

标签 java spring-boot log4j2

我有一个带有以下 log4j2.xml 配置文件的 Spring Boot 应用程序

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <File name="MyFile" fileName="getworks-backend.log" immediateFlush="false" append="false">
        <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
</Appenders>
<Loggers>
    <Root level="all">
        <AppenderRef ref="Console" level="warn"/>
        <AppenderRef ref="MyFile" level="warn"/>
    </Root>
</Loggers>

我收到一条警告消息,内容如下

log.warn("Unexpected token {}", accessToken);

它出现在控制台上,但不在我的日志文件中。 如果我将 AppenderRef ref="MyFile"level="warn" 级别更改为 level="info" ,它会将日志消息写入文件,但仅限那些不是由我的类(class)里有记录员。

我的 build.gradle 的某些部分:

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}
dependencies {
    //log4j2
    compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.11.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-web', version: '2.11.0'
    //other dependencies
}

如何使 log4j2 在写入文件时不忽略我的日志?

附:我使用 @Log4j2 lombok 注释来生成我的 log 对象,但如果我以经典方式执行此操作,则不会发生任何变化。

最佳答案

由于您设置了immediateFlush=false,因此输出被缓冲。最终,输出将在更多消息后被刷新,但我会删除该语句。 ImmediateFlush 默认为 true。

关于java - Log4j 在写入文件时跳过内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49477650/

相关文章:

当我合并使用 Log4j 2 的库时,java.util.logging 停止工作

logging - 如何过滤slf4j/log4j2中的Jetty DEBUG消息?

java - 如何使用 Pulsar 作为 Log4j2 的 Appender?

java - Java当前时间(逻辑错误)时区: US Eastern Time

java - JPanel 不响应 KeyListener 事件

java - jackson 反序列化json到java对象

java - Spring Boot自定义通过抛出异常接收带有HTTP OPTIONS的响应

java - 如何在任意特定端口收到短信时自动打开Android应用程序?

java - 通过 'maven-assembly-plugin'打包spring boot项目时出现Directory Error

java - findOne 方法无法使用两个数据源(MySQL 和 MongoDB)进行编译