Log4j2打印在Console工程查找,但没有创建日志文件

时间:2017-08-31 22:10:05

标签: java spring jersey log4j2

我使用的是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");
    }
}

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

任何人都可以吗?感谢

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

实际上,我的文件是每次创建的,但是找不到。

根据给定的配置,它将在安装IDE(即Eclipse / STS / Netbeans等)的位置创建。尝试在该目录中查找。我相信您可以在那找到它。

答案 1 :(得分:0)

配置文件中的路径名"logfile.log"相对路径名

由于已为日志文件指定了相对路径名,因此将相对于运行的Tomcat进程的工作目录 创建该文件。工作目录的位置将完全取决于Tomcat的启动方式。

(我们无法确定日志文件的位置。它可能在您IDE的工作空间中。它可能在Tomcat安装树中。它可能在其他地方。甚至有可能Tomcat的工作目录不能被Tomcat进程...而无法创建日志文件。)

解决方案:

  • 使用特定于操作系统的工具搜索日志文件。例如,在Linux上为find
  • 在log4j2配置文件中指定日志文件的绝对路径名。

答案 2 :(得分:-1)

您将在tomcat Webapp目录中找到