Tomcat日志配置

Tomcat简介各位同仁,上期日志维基我们介绍Apache日志的相关内容,本期向大家介绍由Apache软件基金会下属Jakarta项目开发的Servlet容器----Tomcat。从最初发布的Tomcat 3.0.x至今,Tomcat的最新版本为7.0.12 Released。作为轻量级应用服务器,Tomcat普遍应用在中小型系统和并发访问用户不是很多的场合。Tomcat以其资源占有率小、扩展性好、支持负载及邮件服务等功能,深受广大编程员的喜爱。

Tomcat日志信息分为两类:一是运行中的日志,它主要记录tomcat在运行过程中的信息,尤其是一些异常、错误的日志信息;二是访问日志信息,它记录了访问的时间、IP地址、访问资料等相关信息。Tomcat 启动时的系统日志默认是由 JdkLog14Logger 打印,而且若将通用日志组件 (commons-logging)和log4j搭配使用就能输出十分详尽的日志信息。

Tomcat日志配置

在默认安装下,tomcat 不记录访问日志,但Tomcat自带的能够记录的http访问日志很详细,若想要查看tomcat的访问日志,下面配置方法可以使 tomcat 记录访问日志:

编辑 ${catalina}/conf/server.xml 文件写入如下内容(注:${catalina} 为 tomcat 的安装目录)

<Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs"prefix="localhost_access_log." suffix=".txt"

pattern="common" resolveHosts="false"/>

配置实例:

Valve className="org.apache.catalina.valves.AccessLogValve"
directory="E:\Tomcat_log" prefix="longxun_tomcat." suffix=".txt"
pattern=''%h %l %u %t "%r" %s %b "%{Referer}i"''
resolveHosts="false" fileDateFormat="yyyy-MM-dd.HH"/

其中:fileDateFormat="yyyy-MM-dd.HH",会让日志文件按小时进行滚卷,比默认的按天滚卷要好些,尤其是访问量大的网站,可以考虑写成fileDateFormat="yyyy-MM-dd.HH.mm",就会是每分钟一个日志文件了。而且可以分别按Engine, Host, or Context,来记录自己的日志。

pattern作为其中最主要的参数,其内容中包含的参数也相对丰富许多,下面我们重点介绍下pattern。

通过pattern项的修改,可以改变日志输出内容。Pattern有两种设置方式分别为common和combined,这两个预先设置好的格式对应的日志输出内容如下:

common 的值: %h %l %u %t %r %s %b

combined的值: %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i

pattern也可以根据需要自由组合,例如 pattern="%h %l"

Tomcat是由Apache软件基金会下属的组织开发而出,在访问日志的输出规格上两者有较多的相识之处。

以下是由互联网提供的tomcat访问日志范例:

127.0.0.1 192.168.254.108 - 127.0.0.1 HTTP/1.1 - GET 80&<60; GET /rightmainima/leftbott4.swf HTTP/1.1 304 5563A67708646B6AA299C33D59BE132A [22/Sep/2007:10:08:52 +0800] - /rightmainima/leftbott4.swf localhost 0 0.000

让我们通过上述例子分析,了解下相关的参数:

%a 远端IP地址即访问者的地址为127.0.0.1;

%A 本地IP地址为192.168.254.108;

%b 发送的字节数,不包括HTTP头,这里为0,使用“-”;

%h 由于在编辑server.xml文件时, resolveHosts配置为false,将会显示远端IP地址即127.0.0.1;若resolveHosts配置为true,远端主机的IP地址将通过DNS查询转换成主机名;

%H 请求协议为HTTP/1.1;

%m 访问动作为GET;

%p 请求端口为80端口;

%U 访问的URL地址为/rightmainima/leftbott4.swf;

%shttp的返回值为304;

%S 用户的session ID为5563A67708646B6AA299C33D59BE132A;

%t 日志时间为22/Sep/2007:10:08:52 +0800;

%v 本地服务器名称为localhost;

%T 处理请求时间(以毫秒为单位)

%D 处理请求时间(以秒为单位)

tomcat日志的用途

在简介中,我们提到tomcat日志分为两类,运行日志和访问日志,通过分析tomcat日志的信息,我们不仅能够在tomcat运行异常时定位到故障位置,而且服务被攻瘫之后通过访问日志了解基本攻击信息,进而及时做出应对策略。

当碰上Tomcat比较难缠的Error filterStart,控制台输出信息如下:

2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors

针对filterStart的错误,网上的专业人士给出了各式各样的见解,但是不一定能和你的实际情况挂钩。这时在手足无措下,有些人会将重点放在filter上,极有可能忽略了Tomcat自身的运行日志。当遇上关于Tomcat本身启动问题时,我们可以从logs 目录下的 localhost_log.yyyy-MM-dd.txt查找相关运行日志,通过查看其中的运行日志信息,问题基本上就可以迎刃而解了。

小技巧:修改Tomcat运行日志等级

Tomcat 日志种类分为下面5类:

ØCatalina

ØLocalhost

ØManager

ØAdmin

ØHost-manager

在这五类日志中每类日志的级别分为如下7种:

SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

在了解了Tomcat运行日志的等级划分后,下面我们介绍下日志级别的设定方法:

修改 conf/logging.properties 中的内容,设定某类日志的级别

示例:

设置 catalina 日志的级别为: FINE

1catalina.org.apache.juli.FileHandler.level = FINE

禁用 catalina 日志的输出:

1catalina.org.apache.juli.FileHandler.level = OFF

输出 catalina 所有的日志消息均输出:

1catalina.org.apache.juli.FileHandler.level = ALL


你可能感兴趣的:(Tomcat日志配置)