爲了讓web application能隨意使用logging組件而不受web容器自身的影響,從tomcat 6.0開始,tomact默認使用的是java.util.logging framework來記錄其運行日誌,但同時也提供了可選擇其餘log框架的接口擴展包,官網上給出瞭如何將tomcat的運行日誌框架切換到log4j,可是目前大部分web應用都使用的是性能更好的log4j2,其配置過程相比於log4j,稍有不一樣,今天就給你們介紹一些如何將tomcat的運行日誌框架切換到log4j2下。html
附:log4j2.xml配置內容java
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="off"> <Properties> <Property name="CATALINA_BASE_LOGPATH">../logs</Property> <Property name="logLocalIP">10.11.12.13</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> <Kafka name="KAFKA_ERROR" topic="leinfo"> <filters> <thresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" /> </filters> <patternLayout charset="UTF-8" pattern="%date{yyyy-MM-dd HH:mm:ss}||%-5level||%logger||Tomcat||${logLocalIP}||%mdc{logRemoteIP}||%ex{short.className}.%ex{short.methodName}[%ex{short.lineNumber}]||%message||%ex{1}%n" > </patternLayout> <Property name="bootstrap.servers">10.11.12.13:9092,20.150.70.106:9092(示例)</Property> </Kafka> </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> <Logger name="org.apache.kafka" level="INFO" /><!-- avoid recursive logging --> <root level="INFO"> <appender-ref ref="CATALINA" /> <appender-ref ref="KAFKA_ERROR" /> <appender-ref ref="CONSOLE" /> </root> </loggers> </configuration>