Java web应用catalina在Eclipse中运行时未将日志写入日志文件



我有一个Java web应用程序,我在Eclipse中为我的开发环境运行它。我使用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>

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

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

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

最新更新