java - 设置 log4j2 日志文件的相对路径

标签 java spring log4j log4j2

我使用 log4j2 进行以下配置的日志记录:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Appenders>
        <Console name="LogToConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <File name="LogToFile" fileName="tomcat.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Logger name="com.say" level="info" additivity="false">
            <AppenderRef ref="LogToFile"/>
            <AppenderRef ref="LogToConsole"/>
        </Logger>
        <Logger name="org.springframework.boot" level="error" additivity="false">
            <AppenderRef ref="LogToConsole"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="LogToFile"/>
            <AppenderRef ref="LogToConsole"/>
        </Root>
    </Loggers>
</Configuration>

如您所见,与定义将写入日志的文件相关的行是:

<File name="LogToFile" fileName="tomcat.log">

这样我在项目文件夹中找不到任何日志。当我使用绝对路径时,我成功生成了日志文件,但我希望它基于项目路径,并且我已经看到了该路径的示例,例如:logs/app.log 所以我想可以设置它,我只是不确定为什么它对我不起作用。

这是一个在 ubuntu 16.04 上运行的 spring boot 项目。

最佳答案

如果您只指定文件名,则应该在项目根目录中创建 .log 文件。例如,如果项目根目录是 c:/mycode/myproject ,则应在 myproject 目录中创建日志文件。

如果您特别希望将文件放置在 log 子目录中,您只需将其指定为 filename 属性的一部分... fileName ="./logs/tomcat.log"。然后该文件将被放置在 c:/mycode/myproject/logs

从您提供的配置中,我没有看到任何不应该这样工作的内容。唯一的事情是,您的 LogToFile 附加程序仅全局应用于错误级别日志记录,并且 info 以下没有任何内容专门用于 的类部分com.say 包。因此,任何不属于 com.say 包或低于 error 级别的内容都不会记录到文件中。

关于java - 设置 log4j2 日志文件的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237664/

相关文章:

java - Log4j 日志附加到取决于日期的文件名 - 配置

java - Adobe flex 与 Java 通信的最佳方式是什么?

java - 将 hibernate 与 java 控制台应用程序一起使用

java - 在 spring boot 中设置 dbunit 模式

java - 无法使用 JAXB 解码收到的请求

java - 如何在运行时覆盖我的 jar 中的 log4j 属性文件

java - 如何找出抽象列表中的对象?

Java 数据库连接分为 2 个类

java - NoClassDefFound错误: org/springframework/jdbc/core/RowMapper

java - 为什么 log4j 重命名文件名?