Tomcat 7源码学习笔记 -11 日志输出

一.关于tomcat的日志设计,采用了工厂模式,主要的类有下面几个:

 

org.apache.juli.logging包:

 

1》Log接口

对外提供的接口,用户使用LogFactory.getLog方法获取的日志对象的抽象。

 

2》LogFactory类

通过静态的getLog方法,向用户提供获取日志对象的接口

 

public static Log getLog(Class<?> clazz)

public static Log getLog(String name)

 

getLog方法内部调用DirectJDKLog.getInstance(name),来获取DirectJDKLog对象

 

LogFactory本身是singleton的。

 

 

private static LogFactory singleton=new LogFactory();

public static LogFactory getFactory() throws LogConfigurationException {
        return singleton;
}

private LogFactory() {
        logConfig=new Properties();
}
  

3》DirectJDKLog类

实现了Log接口,并且内部封装了java的Logger对象

对于Log接口的实现,内部调用的都是java的Logger对象的方法,比如:

 

@Override
public final boolean isErrorEnabled() {
    return logger.isLoggable(Level.SEVERE);
}

 

二.日志配置文件

tomcat的日志配置文件是%CATALINA_BASE%\conf\logging.properties文件

在启动tomcat的时候,通过java的系统变量-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"来进行指定,如果不指定的话,会使用java的jre下的lib/logging.properties缺省配置文件。

 

其实tomcat并不直接使用这个配置文件,而是由java.util.logging.LogManager类来使用,tomcat的日志实现只是对java的日志实现进行了简单的封装,还有就是覆盖了java缺省的日志配置文件。

 

tomcat缺省情况下,只输出INFO级别以上的日志信息,如果想输出更详细的信息的话,需要手工修改conf\logging.properties文件,比如:

 

 

# 输出继承LifecycleBase类的每个子类的日志
org.apache.catalina.util.LifecycleBase.level = FINE

# 缺省的handler是控制台输出和catalina.yyyy-mm-dd.txt文件
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

# 缺省情况下,控制台输出格式采用简单格式,当然可以根据需要自己去修改

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值