簡體   English   中英

Log4j2 在控制台上打印工作找到,但沒有創建日志文件

[英]Log4j2 prints on Console works find, but no log file created

我正在使用 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 的工作目錄...並且無法創建日志文件。)

解決方案:

  • 使用特定於操作系統的工具搜索日志文件。 例如,在 Linux 上find
  • 在 log4j2 配置文件中指定日志文件的絕對路徑名。

我遇到了同樣的問題。

實際上,我的文件一直在創建,但我找不到它。

根據您給定的配置,它將在您安裝 IDE(即 Eclipse/STS/Netbeans 等)的位置創建。 嘗試在該目錄中查找。 我相信你會在那里找到它。

你會在 tomcat webapp 目錄中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM