我有一个简单的 spring boot 项目,我使用 log4j2 进行日志记录。当我在 IntelliJ 中运行我的应用程序时,我可以看到我的日志文件是在指定位置生成的,但是当我将它打包为一个 war 文件并将其部署在我的本地 tomcat 服务器中时,没有生成任何日志。有什么想法吗?
==========编辑==============================
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Properties>
<Property name="log.dir">C:\\users\myname\Desktop</Property>
<Property name="app.name">myapp</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${log.dir}/app-info.log" filePattern="${log.dir}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.myapp.mypackage" level="info" additivity="true">
<appender-ref ref="fileLogger" level="info" />
</Logger>
<Root level="debug" additivity="false">
<appender-ref ref="console" />
</Root>
</Loggers>
</Configuration>
这不完全是我的 log4j2 配置文件,但我的也很简单。我有一个滚动文件附加程序,我想将应用程序信息记录到其中。如果我在 IntelliJ 中运行我的应用程序,将生成日志文件,我可以看到日志流入。
我也试过 C:/users/myname/Desktop,它适用于 IntelliJ 但不适用于我的本地 tomcat。
同样的路径也适用于我的朋友,它在他的桌面上生成了日志文件,但他想不出他做过的任何具体配置。
我也试过把log.dir设置成一堆废话,放到我本地的tomcat服务器上,居然没有报错。所以我认为tomcat根本不看我的log4j2.xml?
==================更新============================< /p>
好的,我删除了环境变量中的 CATALINA_HOME 并使用了另一个版本的 tomcat 并且它工作了。
我尝试了 tomcat 8.5、9.0.30 和 9.0.37。 在我设置 CATALINA_HOME 环境变量之前,9.0.30 不会运行;我设置后没有生成日志。
我删除了 9.0.30 并尝试了 8.5。我改了CATALINA_HOME,设置为8.5文件夹,没有生成日志。
我删除了 9.0.30 并使用了 9.0.37,删除了所有 CATALINA_HOME 变量,并且它起作用了。已生成日志。
答案 0 :(得分:0)
很可能是在Tomcat中运行时日志文件的生成路径不允许。您应该查看 Catalina 日志。
答案 1 :(得分:0)
好的,我删除了环境变量中的 CATALINA_HOME 并使用了另一个版本的 tomcat 并且它工作了..
答案 2 :(得分:0)
缺少 log4j 配置的问题通常与应用程序没有找到您认为应该找到的 log4j 配置文件有关。您可以添加 java 参数 -Dlog4j.debug=true
以在应用程序搜索配置文件时从应用程序获取一些诊断信息。您还可以通过选项 -Dlog4j.configuration=file:/<apath>/log4j.properties
直接告诉它使用特定文件。在容器中运行应用程序(例如 tomcat)会进一步增加配置搜索位置的复杂性。