从Tomcat服务器的日志说起

来源:互联网 发布:爱淘宝网红包 编辑:程序博客网 时间:2024/03/28 21:04

Tomcat7.X启动的日志,用的是自身的Log框架,既不是JDKLog4j等组件的。它定义在{CATALINA_HOME}/bin/tomcat-juli.jar中。

之所以这样设计,可能是为了避免与WebApp中的日志框架产生冲突(因为一般webapp大多可能使用JDK或者Log4j的组件)。

启动Tomcat时,Tomcat自身所加载的classpath有:

  1.  {CATALINA_HOME}/bin/bootstrap.jar --- 用于启动tomcat引擎
  2.  {CATALINA_HOME}/bin/tomcat-juli.jar ---用于日志
  3.  {JAVA_HOME}/jre/lib/*.jar ---加载java基础核心包
  4.  {JAVA_HOME}/lib/tools.jar ---加载sun扩展工具包

其次,所有的WebApp都会加载一层classloder,位于{CATALINA_HOME}/lib,这里所包含的jar文件主要包含:

  1.  J2EE规范标准中的一些接口,如EL规范el-api.jar, Servlet规范servlet-api.jar, Jsp规范jsp-api.jar, 注解规范annotations-api.jar
  2.  Tomcat针对J2EE上述规范的具体实现包,比如catalina-*.jar, tomcat-*.jar

最后,每个独立的WebApp都会加载自己的应用层classloader,位于WebApp/WEB-INF/lib以及WebApp/WEB-INF/classes

通常会把jar文件放到lib目录,把应用的配置文件以及webclass文件(如StrutsAction类等)放到classes目录,因为这样才能够使得某些注解成功起效。


特别说明:某些组件的Log日志,直接使用的是JDK的日志组件,而不是采用Apachecommon-logging组件来产生日志,因此,即使你正确的配置了Log4j组件,

这些日志的输出依然是JDK的日志格式。例如jersey实现的Restful组件,在搜索Restful service文件的时候,用的类是

com.sun.jersey.api.core.ScanningResourceConfig,它所采用的日志类是java.util.logging.Logger,所以日志的控制文件是logging.properties

0 0