很多項目都使用log4j作爲日誌框架,但是tomcat默認的框架不是log4j的,打印出來的日誌也不會保存到項目指定的地方,而對於那些系統運行過程中出現的異常信息,我們是需要監控的,所以我們會希望tomcat和項目的日誌放到一個地方,這時我們就需要修改tomcat默認的日誌框架。
tomcat官網上面有相關日誌框架切換的文檔,https://tomcat.apache.org/tomcat-8.0-doc/logging.html,不過這個是針對log4j的,現在大家都已經開始使用log4j2了,所以今天給大家介紹下tomcat8如何集成log4j2。
1,下載相關jar包
從tomcat官網上下載擴展包:tomcat-juli.jar和tomcat-juli-adapters.jar,log4j2我們用的版本是2.10,選擇log4j-1.2-api-2.10.0.jar(用於log4j2與log4j1的橋接)、log4j-api-2.10.0.jar和log4j-core-2.10.0.jar三個包。
2,部署jar包
將log4j2的3個jar包和 tomcat-juli-adapters.jar放到tomact目錄下的lib文件夾下,將tomcat-juli.jar複製到tomcat目錄下bin文件夾下替換原來的文件。
3,創建日誌配置文件
在tomcat目錄下lib文件夾下創建log4j2.xml,文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="off">
<Properties>
<Property name="CATALINA_BASE_LOGPATH">../logs</Property>
</Properties>
<appenders>
<console name="CONSOLE" target="SYSTEM_OUT">
<patternLayout charset="UTF-8"
pattern="%date{yyyy-MM-dd HH:mm:ss}[%-5level]%logger[%L]-%message%n" />
</console>
<rollingFile name="CATALINA"
fileName="${CATALINA_BASE_LOGPATH}/catalina.log"
filePattern="${CATALINA_BASE_LOGPATH}/catalina.%date{yyyyMMdd}">
<patternLayout charset="UTF-8"
pattern="%date{yyyy-MM-dd HH:mm:ss}[%-5level]%logger[%L]-%message%n" />
<policies>
<timeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB"/>
</policies>
</rollingFile>
<rollingFile name="LOCALHOST"
fileName="${CATALINA_BASE_LOGPATH}/localhost.log"
filePattern="${CATALINA_BASE_LOGPATH}/localhost.%date{yyyyMMdd}">
<patternLayout charset="UTF-8"
pattern="%date{yyyy-MM-dd HH:mm:ss}[%-5level]%logger[%L]-%message%n" />
<policies>
<timeBasedTriggeringPolicy />
</policies>
</rollingFile>
<rollingFile name="MANAGER"
fileName="${CATALINA_BASE_LOGPATH}/manager.log"
filePattern="${CATALINA_BASE_LOGPATH}/manager.%date{yyyyMMdd}">
<patternLayout charset="UTF-8"
pattern="%date{yyyy-MM-dd HH:mm:ss}[%-5level]%logger[%L]-%message%n" />
<policies>
<timeBasedTriggeringPolicy />
</policies>
</rollingFile>
<rollingFile name="HOST-MANAGER"
fileName="${CATALINA_BASE_LOGPATH}/host-manager.log"
filePattern="${CATALINA_BASE_LOGPATH}/host-manager.%date{yyyyMMdd}">
<patternLayout charset="UTF-8"
pattern="%date{yyyy-MM-dd HH:mm:ss}[%-5level]%logger[%L]-%message%n" />
<policies>
<timeBasedTriggeringPolicy />
</policies>
</rollingFile>
</appenders>
<loggers>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" level="INFO">
<appender-ref ref="LOCALHOST" />
</logger>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]" level="INFO" additivity="false">
<appender-ref ref="MANAGER" />
</logger>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]" level="INFO" additivity="false">
<appender-ref ref="HOST-MANAGER" />
</logger>
<root level="INFO">
<appender-ref ref="CATALINA" />
<appender-ref ref="CONSOLE" />
</root>
</loggers>
</configuration>
日誌輸出的格式可以根據自己的需要進行修改。
4,刪除tomcat默認日誌配置
刪除tomact目錄下conf文件夾下的logging.properties文件。
現在啓動項目,查看輸出的日誌文件已經是log4j打印出來的了。