我正在通過Tomcat 8.0.24將Web服務部署爲Web應用程序(戰爭)。應用程序罐已經過測試,並且工作正常。現在爲了配置和測試log4j的目的,我激發了一個運行時錯誤(沒有連接數據庫)。如何在Tomcat 8中爲web應用程序配置log4j2?
我想設置log4j2爲應用程序日誌記錄(不是爲tomcat),我使用Netbeans 8.0.2建立戰爭。
我已經包含以下jar文件中的類路徑:
log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar
commons-logging.jar
而且log4j2.xml在WEB-INF,只有根記錄器配置爲捕獲一切從Web應用程序來:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration strict="true" status="TRACE">
<Properties>
<Property name="filename">C:\logs\Myapp.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="Console" target="SYSTEM_OUT">
<Layout type="PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} - %-5level %logger - %msg%n</Pattern>
</Layout>
</Appender>
<Appender type="File" name="FileAppender" fileName="${filename}" append="true" immediateFlush="true">
<Layout type="PatternLayout">
<Pattern>%d %p %logger -%C- %m%n</Pattern>
</Layout>
</Appender>
</Appenders>
<Loggers>
<Root level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileAppender" level="WARN"/>
</Root>
</Loggers>
</Configuration>
我有還配置了catalina.properties,以防萬一,以覆蓋默認的罐子Toshkip:
tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-core*.jar,log4j-taglib*.jar,log4j-api*.jar,log4j-web*.jar,log4j-jcl*.jar`
我相信log4j的被正確初始化爲卡特琳娜* .LOG狀態,因爲狀態=「TRACE」:
2017-02-08 14:06:52,355 http-nio-8080-exec-8 DEBUG Log4jServletContextListener ensuring that Log4j starts up properly.
2017-02-08 14:06:52,357 http-nio-8080-exec-8 DEBUG Log4jServletFilter initialized.
又因爲創建日誌文件。
但是,來自應用程序(Web服務jar)的所有運行時錯誤消息都以catalina * .log結尾,而不是我配置的文件appender。此外,catalina * .log中的這些錯誤消息沒有遵循Appenders定義中定義的任何模式,所以它基本上看起來像log4j2被忽略。
我在做什麼錯?