更詳細的解釋請認真閱讀 官方文檔日志介紹 http://tomcat.apache.org/tomcat-6.0-doc/logging.html
一、tomcat 中應用記錄日志的三種方式
- 使用 java.util.logging (tomcat 默認使用的)
- 使用 java servlet 提供的日志API javax.servlet.ServletContext.log(...)
- 使用日志框架 比如log4j
二、JULI (后續的logging.properties里可以看到)
關於java.util.logging
API,tomcat有其自己的實現 被稱為"JULI",它是一個常用的日志管理實現,它能感知tomcat中運行的多個不同的application(它們有各自的類加載器),它支持針對每一個部署的應用
單獨配置其日志配置(logging.properties)。
使用tomcat的啟動腳本啟動服務器(java)時,java.util.logging將自動生效,但如果你使用的是其他的啟動方式(非腳本):比如集成到IDE里啟動,則需要自己關注是否生效。
1、全局日志配置
默認使用 ${catalina.base}/conf/logging.properties 目錄下的配置,此路徑可以在啟動時在腳本中通過參數java.util.logging.config.file 設置。如果沒有配置上述文件,則會使用
${java.home}/lib/logging.properties路徑下配置
2、Application
對於部署在tomcat中的應用,如果想看到更多的詳細信息,可以將配置文件放置在 WEB-INF/classes目錄下
logging.properties配置的例子
handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. 3manager.org.apache.juli.FileHandler.level = FINE 3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.FileHandler.prefix = manager. 3manager.org.apache.juli.FileHandler.bufferSize = 16384 java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \ 2localhost.org.apache.juli.FileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \ 3manager.org.apache.juli.FileHandler # For example, to log debug messages in ContextConfig and HostConfig # classes and to log only warnings and errors in other # org.apache.catalina.** classes, uncomment these lines: #org.apache.catalina.startup.ContextConfig.level = FINE #org.apache.catalina.startup.HostConfig.level = FINE #org.apache.catalina.level = WARNING
三、關於tomcat中開啟access.log日志的方法(默認關閉)
修改如下配置文件 tomcat/conf/server.xml
<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> -->
將上述注釋掉的代碼放開,就會產生access.log文件.
四、具體實踐應用
在使用tomcat部署項目啟動后(特別是使用struts,spring框架等),有的錯誤打印的很模糊,僅說明error,沒有打印具體錯誤原因
例:
org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/******] startup failed due to previous errors
想獲取更多的報錯信息,可以新建logging.properties配置文件,放置到該應用WEB-INF/calsses目錄下
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ org.apache.juli.FileHandler.level = FINE org.apache.juli.FileHandler.directory = ${catalina.base}/logs org.apache.juli.FileHandler.prefix = error-debug. java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
再次啟動tomcat,報錯日志會生成到logs目錄下