前面介紹了用于 Tomcat 內部日志的 java.util.logging,接下來本部分內容介紹如何通過配置 Tomcat 使用 log4j。
注意:當你想重新配置 Tomcat 以便利用 log4j 來進行自身日志記錄時,下面的步驟都是必需的;而當你只是想在自己的 Web 應用上使用 log4j 時,這些步驟則不是必需的。在后一種情況下,只需將 log4j.jar 和 log4j.properties 放到 Web 應用的 WEB-INF/lib 和 WEB-INF/classes 中即可。
通過下列步驟可配置 log4j 輸出 Tomcat 的內部日志:
1.創建一個包含下列配置的 log4j.properties 文件,將其保存到 $CATALINA_BASE/lib。
log4j.rootLogger = INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
INFO, HOST-MANAGER
2.下載 log4j(Tomcat 需要 1.2.x 版本)。
3.下載或構建 tomcat-juli.jar 和 tomcat-juli-adapters.jar,以便作為 Tomcat 的額外組件使用。詳情參考 Additional Components documentation。
`tomcat-juli.jar` 跟默認的版本不同。它包含所有的 Commons Logging 實現,從而能夠發現 log4j 并配置自身。
4.如果希望全局性地使用 log4j,則如下配置 Tomcat:
5.如果是利用獨立的 $CATALINA_HOME 和 $CATALINA_BASE 來運行 Tomcat,并想在一個 $CATALINA_BASE 中配置使用 log4j,則需要:
注意:其中的工作原理在于:優先將庫加載到 $CATALINA_HOME 中同樣的庫中。
注意:tomcat-juli.jar 之所以從 $CATALINA_BASE/bin 加載(而不是從 $CATALINA_BASE/lib 加載),是因為它是用作引導進程的,而引導類都是從 bin 加載的。
6.刪除 $CATALINA_BASE/conf/logging.properties,以防止 java.util.logging 生成零長度的日志文件。
7.啟動 Tomcat。
log4j 配置沿用了默認的 java.util.logging 設置:管理器與主機管理器應用各自獲得了獨立的日志文件,而所有其余內容都發送到 catalina.log 日志文件中。
你可以(也應該)更加挑剔地選擇日志所包括的包。Tomcat 使用 Engine 和 Host 名稱來定義 logger。比如,要想得到更詳細的 Catalina localhost log,可以將它放在 log4j.properties 屬性中。注意,在 log4j 基于 XML 的配置文件的命名慣例上,目前存在一些問題,所以建議使用所前所述的屬性文件,直到未來版本的 log4j 允許使用這種慣例。
log4j.logger.org.apache.catalina.core.ContainerBase.
[Catalina].[localhost]=DEBUGlog4j.logger.org.apache.catalina.core=
DEBUGlog4j.logger.org.apache.catalina.session=DEBUG
警告:設定為 DEBUG 級別,會產生數以兆計的日志,從而拖慢 Tomcat 的啟動。只有當需要調試 Tomcat 內部操作,才應該使用這一級別。
你的 Web 應用當然應該使用各自的 log4j 配置。上面的配置是有效的。你可以將相似的 log4j.properties 文件放到你的 Web 應用的 WEB-INF/classes 目錄中,將 log4jx.y.z.jar 放入 WEB-INF/lib 中。 然后指定包級別日志。這是基本的 log4j 配置方法,不需要 Commons-Logging。更多選項可參考 log4j 文檔,該頁面只是一種引導指南。
額外注意: