我的Spring Boot应用程序包含以下log4j2.xml配置文件
<?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"
,它会将日志消息写入文件,但只会将那些不是由我的类中的记录器写入的。
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不忽略我的日志?
P.S。我正在使用@Log4j2
lombok注释生成我的log
对象,但如果我以经典的方式进行操作,则不会发生任何变化。
答案 0 :(得分:1)
由于您已设置immediateFlush = false,因此缓冲输出。最终输出将在更多消息之后刷新,但我会删除该语句。默认情况下,ImmediateFlush为true。