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