我使用 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/