设置 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 启动项目。

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

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

从您提供的配置中,我没有看到任何不应该像这样工作的东西。唯一的问题是,您的LogToFile追加器仅全局应用于error级日志记录,而没有专门针对com.say包的类部分info以下内容。因此,不属于com.say包或低于error级别的任何内容都不会记录到文件中。

我会尝试:

"./logs/tomcat.log" 

最新更新