如何在Tomcat 9上使用Log4J配置应用程序日志记录?

时间:2019-07-03 08:12:24

标签: java tomcat log4j

我想使用Log4J从基于Tomcat的应用程序中登录。

Log4J配置为

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true">

    <appender name="roller" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.base}/logs/application.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[slf5s.start]%d{DATE}[slf5s.DATE]%n%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n"/>
        </layout>
    </appender>


    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="|%d|%5.5p|%5.5t|%20.20c{20}.%M - %m%n"/>
        </layout>
    </appender>

    <category name="com.acme" additivity="false">
        <priority value="trace"/>
        <appender-ref ref="roller"/>
        <appender-ref ref="console"/>
    </category>

</log4j:configuration>

我可以在stdout / stderr日志中看到Log4J已初始化并创建了预期的日志文件,但它仍然为空。

其他所有catalina日志均已创建并填充。 JULI日志记录是否有可能阻止Log4J正常工作?

1 个答案:

答案 0 :(得分:0)

我正在将项目从Websphere迁移到Tomcat,还介绍了Maven。

问题是Maven依赖项正在加载2个SLF4J提供程序:log4j适配器和传统的logback。

这导致使用NopLogger,它不会记录任何内容。

我明确排除了经典的logback依赖关系,并且现在可以进行记录了。