从Tomcat服务器的日志说起

本文介绍了Tomcat7.X的日志机制,详细解释了其使用自身Log框架的原因及实现方式,并探讨了Tomcat的类加载路径,包括核心日志组件、J2EE规范接口与实现以及WebApp的自定义加载路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值