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有两种设置方式分别为 commoncombined,这两个预先设置好的格式对应的日志输出内容如下:
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;
%s http的返回值为 304;
%S 用户的 session ID5563A67708646B6AA299C33D59BE132A;
%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