gpt4 book ai didi

java - Log4j2 在控制台上打印工作找到,但没有创建日志文件

转载 作者:行者123 更新时间:2023-12-01 06:00:34 27 4
gpt4 key购买 nike

我正在使用 Spring + Jersey,但没有使用 Spring Boot。当我设置 Log4j2 时,消息打印在控制台上,但没有创建日志文件。

配置 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
<Appenders>
<File name="FILE" fileName="logfile.log" append="true">
<PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>

<Loggers>
<Logger name="com.karapax" level="error"/>

<Root level="info">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</Root>
</Loggers>

</Configuration>

它是一个 Maven 项目,在我的 pom.xml 中,相关库如下所示。我没有提供这个项目中使用的所有其他库。

<!-- Spring dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.11.0.RELEASE</version>
</dependency>
<!-- Log Dependencies -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>

我在本地Tomcat上运行下面的代码。
@Path("log/")
public class LogTestServelt extends BaseServlet {

private final Logger logger = LogManager.getLogger(this.getClass());

@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML })
public void testLog() {
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
}
}

当我尝试向此端点发送请求时,控制台上打印的消息正常,但未创建日志文件。

有谁可以吗谢谢

最佳答案

路径名 "logfile.log"在您的配置文件中是一个相对路径名。
由于您已为日志文件指定了相对路径名,因此将相对于正在运行的 Tomcat 进程的工作目录创建该文件。工作目录位置将取决于 Tomcat 的启动方式。
(我们不能确定日志文件的位置。它可能在您 IDE 的工作区中。它可能在 Tomcat 安装树中。它可能在其他地方。甚至有可能 Tomcat 进程无法写入 Tomcat 的工作目录...并且无法创建日志文件。)
解决方案:

  • 使用特定于操作系统的工具搜索日志文件。例如,find在 Linux 上。
  • 在 log4j2 配置文件中指定日志文件的绝对路径名。
  • 关于java - Log4j2 在控制台上打印工作找到,但没有创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990779/

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