第七章、日志
一、前言部分
A Logger是一个记录消息的组件。在Catalina中的一个logger是与一个Container关联,该组件和其他组件相比是相对比较简单。Tomcat在org.apache.catalina.logger包中提供不同类型重做日志功能。在本章的应用程序将会在ex07.pyrmont包中找到,这两个类( SimpleContext,Bootstrap)发生了改变,其他的代码与第六章的应用程序都是一样。
在本章分为三个部分。第一个部分就是说明org.apache.catalina.Logger接口,该接口一定会被整个loggers实现。第二部分解释在Tomcat中的the Loggers,然后第三部分就十分详细的说明在本应用程序中如何运用Tomcat的Loggers。
二、The Logger接口
一个Logger一定要实现org.apache.catalinna.Logger接口,下面请看代码:
package org.apache.catalina;
import java.beans.PropertyChangeListener;
public interface Logger {
public static final int FATAL = Integer.MIN_VALUE;
public static final int ERROR = 1;
public static final int WARNING = 2;
public static final int INFORMATION = 3;
public static final int DEBUG = 4;
public Container getContainer();
public void setContainer(Container container);
public String getInfo();
public int getVerbosity();
public void setVerbosity(int verbosity);
public void addPropertyChangeListener(PropertyChangeListener listener);
public void log(String message);
public void log(Exception exception, String msg);
public void log(String message, Throwable throwable);
public void log(String message, int verbosity);
public void log(String message, Throwable throwable, int verbosity);
public void removePropertyChangeListener(PropertyChangeListener listener);
}
The Logger接口提供了许多log方法,实现该接口的组件就会调用log方法。这些方法最简单的一个就是接收一个字符串作为消息记录起来。
最后两个log方法主要是接受一个冗长的程度(这里我也不知道是干什么的)。如果传过来的整数要比当前在该组件实例的冗长程度要低,那么该消息就会被记录起来,否则就会该消息就被忽略。五个冗长的程度被定义了(是以公共静态变量):
FATAL,ERROR,WARNING,INFORMATION,DEGUE。the getVerbosity和setVerbosity方法是用了获得和设置这个值。
除此之外,The logger接口也有getContainer和setContainer方法目的就是该组件要与Conatiner相关联起来。该接口也提供了addPropertyChangeListener和removePropertyChangeListener,目的就是添加和移除一个propertyChangeListener.
这些方法当你看到Tomcat中的Logger类你会更加的明白。
三、Tomcat的Loggers
Tomcat提供了三个Loggers分别是(FileLogger,SystemErrLogger,SystemOutLogger).这些类能够在org.apache.catalina.logger包中找到,在Tomcat4中The org.apache.catalina.logger.LoggerBase类实现了Logger接口。而在Tomcat5中LoggerBase也实现了Lifecycle接口(在第六章已经讨论了)和MBeanRegistration(这个将会在第二十章讨论)
下面是其UML类图:
四、The LoggerBase类
在Tomcat5中The LoggerBase类是十分的复杂,因为它把创建MBeans相关的代码也兼容在该类里面,这个我们会在第二十章讨论。因此我们就看看在Tomcat4中的the LoggerBase类。如果你能够理解第二十章内容,那么你也应该能理解在Tomcat5中的the LoggerBase类。
在Tomcat中的LoggerBase类(此类是抽象类)实现了The Logger接口的所有方法除了the log(String msg)方法是抽象方法.
public abstract void log(String msg);
因此就可以在孩子类中实现该方法。注解:典型的模板模式,这个可以借鉴学习。
注意整个其他的log方法都会最终都会调用这个重载的log方法。因为每个孩子的logs 消息有着不同的目的地,因此这个方法在LoggerBase类中是一个抽象方法。
现在让我们看看这个类的冗长(the verbosity)程度。the verbosity程度用成员变量verbosity定义,其默认值是ERROR:
protected int verbosity=ERROR;
The verbosity level可以通过调用setVerbosity方法来改变这个值,主要传的参数是:FATAL, ERROR , WARING , INFOMATION, DEBUG.
下面是在LoggerBase类的setVerbosity方法的代码:
public void setVerbosityLevel(String verbosity) {
if ("FATAL".equalsIgnoreCase(verbosity))
this.verbosity = FATAL;
else if ("ERROR".equalsIgnoreCase(verbosity))
this.verbosity = ERROR;
else if ("WARNING".equalsIgnoreCase(verbosity))
this.verbosity = WARNING;
else if ("INFORMATION".equalsIgnoreCase(verbosity))
this.verbosity = INFORMATION;
else if ("DEBUG".equalsIgnoreCase(verbosity))
this.verbosity = DEBUG;
}
其中有两个log方法接受一个整数作为the Verbosity level。在这些方法中,如果the verbosity程度低于该组件实例的verbosity程度,那么最终都会调用这个要重载的log方法。你可以看看下面的代码:
public void log(String message, int verbosity) {
if (this.verbosity >= verbosity)
log(message);
}
public void log(String message, Throwable throwable, int verbosity) {
if (this.verbosity >= verbosity)
log(message, throwable);
}
LoggerBase类中的三个子类将会在下部分讨论,你将会看到子类是怎样重载the log(message)方法。
五、The SystemOutLogger 类
The LoggerBase类子类实现了the log(message)方法。每接收到消息就会作为参数传到log方法中,然后就在控制台下打印该消息。下面是The SystemOutLogger类的代码:
package org.apache.catalina.logger;
public class SystemOutLogger
extends LoggerBase {
protected static final String info =
"org.apache.catalina.logger.SystemOutLogger/1.0";
public void log(String msg) {
System.out.println(msg);
}
}
六、The SystemErrLogger类
这个类与The SystemOutLogger类十分相似,除了重载the log(String message)方法体不一样,请看下面的代码就一目了然:
package org.apache.catalina.logger;
public class SystemErrLogger
extends LoggerBase {
protected static final String info =
"org.apache.catalina.logger.SystemErrLogger/1.0";
public void log(String msg) {
System.err.println(msg);
}
}
呵呵。。。看到了区别了吧。。。
七、The FileLogger类
The FileLogger类是LoggerBase的子类,该子类是功能最为全面的类。该类一旦接收到与容器关联的消息时它就会把该消息写到一个文件中,并且每条消息都会有任意的时间标记。当第一次实例该类时,这个类就会创建一个文件(文件名字就是创建文件的时间)。如果时间改变了,你将会创建一个新的文件
- 大小: 67.4 KB
分享到:
相关推荐
《How Tomcat Works》是一份深入探讨Apache Tomcat工作原理的重要资源,包含了英文PDF文档、中文HTML翻译以及源代码,旨在帮助读者理解Tomcat服务器的内部运作机制。这份资料是IT从业者,特别是Java Web开发者、系统...
《How Tomcat Works》这本书是理解Apache Tomcat服务器工作原理的宝贵资源,它全面深入地讲解了这个流行的Java Servlet和JavaServer Pages(JSP)容器的内部机制。书中的20个章节涵盖了从基础概念到高级特性的广泛...
《How Tomcat Works》这本书深入浅出地介绍了Apache Tomcat这款广泛应用的Java Servlet容器的工作原理。Tomcat作为开源软件,是许多Web应用的基础,尤其在轻量级开发和测试环境中非常常见。以下是对Tomcat核心知识点...
《How Tomcat Works》是一本深入探讨Apache Tomcat工作原理的中文版书籍,对于Java Web开发者来说,理解Tomcat的工作机制至关重要。Tomcat是Apache软件基金会的Jakarta项目中的一个核心部分,它是一个开源的、免费的...
首先,从标题和描述我们可以得知,这个压缩包包含两部分内容:《HowTomcatWorks》的中文翻译和源码。这使得我们能够从理论和实践两个层面去了解Tomcat。中文版的书籍可以帮助中国开发者消除语言障碍,更深入地理解...
《How Tomcat Works》是一本深入探讨Apache Tomcat工作原理的书籍,包含了中英文两个版本。这本书对于理解Java Servlet和JavaServer Pages(JSP)容器的运作方式具有极高的价值,特别是对于那些想要深入理解Web应用...
《How Tomcat Works》是一本深入解析Apache Tomcat工作原理的书籍,同时也包含了源码,为读者提供了理论与实践相结合的深入学习体验。Tomcat是一款广泛使用的开源Java Servlet容器,它是Apache软件基金会 Jakarta...
《How Tomcat Works》是一本深入探讨Apache Tomcat工作原理的专业书籍,对于任何希望深入了解Java Servlet和JavaServer Pages (JSP)容器的人来说,都是一份宝贵的资源。Tomcat作为最流行的开源Servlet容器,其内部...
"HowTomcatWorks"项目,正如其名,旨在帮助开发者了解Tomcat的工作原理,通过源代码分享,使我们有机会深入探究这个强大的服务器内部机制。 1. **Tomcat架构概览** Tomcat的架构设计分为几个主要部分:Catalina...
《How Tomcat Works》是一本深入解析Apache Tomcat工作原理的权威书籍,对于学习和理解Tomcat服务器的内部机制有着极高的价值。Tomcat作为开源的Java Servlet容器,是许多Web应用开发的基础,广泛应用于小型到中型...
《How Tomcat Works》是一本深入探讨Apache Tomcat工作原理的专业书籍,提供了高清中文版和英文版,适合不同语言背景的读者。这本书旨在帮助开发者理解Tomcat服务器的内部运作机制,提升对Java应用服务器的掌控能力...
《Tomcat工作原理详解——(5)容器》 在深入探讨Tomcat的工作原理时,我们不得不提到一个核心概念——容器。Tomcat作为一个流行的开源Java Servlet容器,它的内部架构设计是理解其高效运行的关键。本篇将详细介绍...
《如何Tomcat工作》这本书深入浅出地揭示了Apache Tomcat服务器的工作机制,它是Java Web应用程序的首选服务器之一。Tomcat是开源的、基于Java Servlet和JavaServer Pages(JSP)技术的应用服务器,由Apache软件基金...
《译How Tomcat Works(第二章)》这篇文章主要讲解了Apache Tomcat服务器的工作原理,它是一个开源的Java Servlet容器,广泛用于部署Web应用程序。在这一章中,我们将深入探讨Tomcat如何处理HTTP请求,以及其内部架构...
《How Tomcat Works》这本书深入剖析了Apache Tomcat服务器的工作原理,它是一个开源的Java Servlet容器,用于部署和运行Java Web应用程序。Tomcat是许多Web开发者和企业的首选,因为其轻量级、高效且易于配置。以下...
《How Tomcat Works》是一本深入解析Apache Tomcat服务器运行机制的重要参考资料,它为开发者提供了详尽的理解Tomcat内部工作原理的指南。Tomcat作为Java Servlet和JavaServer Pages(JSP)的开源应用服务器,是许多...
本书《How Tomcat Works》深入剖析了Tomcat 4.1.12 和 5.0.18 的内部工作机制,通过逐步构建简化的组件来帮助读者更好地理解其复杂系统。 #### 二、目标读者群体 本书面向所有从事Java技术领域的开发者: 1. **...