【问题标题】:Logs get generated when run from IntelliJ but not from local tomcat server从 IntelliJ 但不是从本地 tomcat 服务器运行时会生成日志
【发布时间】:2021-07-16 02:29:44
【问题描述】:

我有一个简单的 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?

==================更新============================

好的,我删除了环境变量中的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 变量,它工作正常。已生成日志。

【问题讨论】:

  • 请将 Log4j2 配置添加到您的问题中。请记住,您服务器的工作目录(根据操作系统)可能会有所不同,因此相对路径是不可靠的。

标签: java tomcat intellij-idea logging


【解决方案1】:

很有可能是在Tomcat中运行时日志文件的生成路径不允许。您应该查看 Catalina 日志。

【讨论】:

    【解决方案2】:

    好的,我在环境变量中删除了CATALINA_HOME并使用了另一个版本的tomcat,它可以工作..

    【讨论】:

      【解决方案3】:

      缺少 log4j 配置的问题通常与应用程序没有找到您认为应该找到的 log4j 配置文件有关。您可以添加 java 参数 -Dlog4j.debug=true 以在应用程序搜索配置文件时从应用程序中获取一些诊断信息。您也可以通过选项-Dlog4j.configuration=file:/&lt;apath&gt;/log4j.properties 直接告诉它使用特定文件。在容器(例如 tomcat)中运行应用程序会进一步增加配置搜索位置的复杂性。

      【讨论】:

        猜你喜欢
        • 2018-01-21
        • 2018-01-11
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        相关资源
        最近更新 更多