首页 > 解决方案 > 在 Eclipse 中运行时,Java Web 应用程序 catalina 日志未写入日志文件

问题描述

我有一个在 Eclipse 中为我的开发环境运行的 Java Web 应用程序。我使用 logback 记录到自定义文件。问题是某些日志记录语句,特别是那些传统上转到catalina.out的语句,并没有出现在我的日志文件中。它们确实出现在我的 Eclipse 控制台中,但没有出现在我的自定义 logback 日志文件中。

当我在Eclipse之外的tomcat 中运行相同的应用程序时(通过startup.bat),这些 catalina 日志记录语句确实会被捕获到catalina.out文件中。但是在 Eclipse 中运行时不会创建catalina.out,因此这些日志不会持续存在。

这是我的logback-test.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- RollingFileAppender that rolls based on size and time -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${catalina.base}/logs/mylog.log</file>
        <encoder>
            <pattern>%date [%thread] %-5level %logger{10} [%file:%line] - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${catalina.base}/logs/mylog.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- each file at most 20MB; keep 10 files worth of history, max total 20GB -->
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>10</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>logback-test %date [%thread] %highlight(%-5level) %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>logback-test %date [%thread] %highlight(%-5level) %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- set logging levels for specific packages -->        
    <logger name="org.apache.catalina.startup" level="INFO"/>

    <!-- set level of the root logger and associate it with both appenders -->
    <root level="INFO">
        <appender-ref ref="FILE"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="STDERR"/>
    </root>
</configuration>

标签: logbacktomcat9

解决方案


这个答案解决了我的问题:https ://stackoverflow.com/a/5045247/3368818

显然,如果在通过 Eclipse 在 tomcat 上运行应用程序时,您想在文件中捕获 catalina 日志,则需要通过 Eclipse tomcat启动配置设置进行指定。

我想这在某种程度上是有道理的,因为 catalina 日志可能不是特定于应用程序的,因此可能超出了 logback 附加程序的范围。但另一方面,它们是否应该默认写入日志文件,就像在 Eclipse 之外启动 tomcat 服务器一样?


推荐阅读