gpt4 book ai didi

java - Log4j2 配置无法写入文件

转载 作者:行者123 更新时间:2023-12-01 16:20:50 24 4
gpt4 key购买 nike

Log4j2 配置无法使用 Spring 5 写入文件。它在控制台上显示日志,但没有任何内容写入文件。然而,文件正在生成,但它是空的。

pom.xml

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.3</version>
</dependency>

src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Properties>
<Property name="basePath">/apps/istore/logs</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/istore.log" filePattern="${basePath}/istore-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="istore-logger" level="info" additivity="true">
<appender-ref ref="fileLogger" level="info"/>
</Logger>
<Root level="info" additivity="false">
<appender-ref ref="console"/>
</Root>
</Loggers>
</Configuration>

MyFilter.java

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class MyFilter extends OncePerRequestFilter {

private static final Logger logger = LogManager.getLogger(MyFilter.class);

@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {

logger.info("@@@@@@@@@@@@@@doFilterInternal");
...
...
}

控制台日志:

[INFO ] 2020-06-09 12:30:49.381 [http-nio-8080-exec-2] MyFilter - @@@@@@@@@@@@@@doFilterInternal

最佳答案

您已经创建了一个名为“istore-logger”的 LoggerConfig。您已经创建了一个名为 MyFilter 的 Logger(您没有显示包语句,所以我假设它没有。当您登录 doFilterInternal 时,您正在记录到 MyFilter Logger。Log4j 将查找具有该名称的 Logger。没有。然后我将去掉最后一个标记并再次查找匹配的记录器。该字符串现在是“”,因此它将匹配根记录器并记录到控制台。

简而言之,您没有将任何内容记录到文件中,因为您没有任何与导致使用该文件的 LoggerConfig 名称匹配的记录器。

关于java - Log4j2 配置无法写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62287619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com