下面我们简单的介绍一下tomcat日志方面的知识。


 tomcat的日志默认是存放在安装目录下的logs目录下:

 

[root@zonghe logs]# ls
catalina.2013-07-03.log 
catalina.out                
localhost.2013-07-03.log 
manager.2013-07-03.log
host-manager.2013-07-03.log 
[root@zonghe logs]# pwd
/data/tomcat1/logs

 

 我们发现有以下几种日志:

  1.catalina.2013-07-03.log 或者 catalina.out   引擎的日志文件

  2.host-manager.2013-07-03.log  这个我也不知道什么日志,如果有人知道麻烦解释一下

  3.localhost.2013-07-03.log   Tomcat下内部代码丢出的日志

  4. manager.2013-07-03.log   默认manager应用日志

  5.默认没有开启的access日志  客户端访问日志


   在tomcat安装目录的conf下有一个 logging.properties的文件,这个文件是设置相关日志开启,日志级别等内容的

 

[root@zonghe conf]# cat logging.properties |grep -v ^#|grep -v ^$|grep -v grep
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler


   tomcat的日志级别分为以下:  

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

   除此之外,我们可以使用OFF关闭相关日志,使用ALL输出所有级别的日志  

3manager.org.apache.juli.FileHandler.level = OFF
把manager日志关闭

   

 



   下面我们详细介绍access日志

   

  因为access日志默认是不开的,所以我们先来看一下怎么开启access日志。

  打开 /usr/local/tomcat6/conf/server.xml。发现以下内容是注释掉的


<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"prefix="localhost_access_log."suffix=".txt"
pattern="common"resolveHosts="false"/>
-->


所以,打开access日志就是把这段内容的注释去掉

 

相关参数的解释:内容来自互联网

className 官方文档上说了This MUST be set toorg.apache.catalina.valves.AccessLogValve to use the default access log valve.&<60; 想配置访问日志?这就必须得写成这样
directory日志存放的位置,默认是logs目录下
prefix这个是日志文件的名称前缀,我的日志名称为localhost_access_log.2007-09-22.txt,前面的前缀就是这个localhost_access_log
suffix设置日志的后缀
pattern对日志输出内容的设置,这个是重点,我们下面详细解释
resolveHosts如果这个值是true的话,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址啦
fileDateFormat日志的时间格式

 

在讲解pattern之前我们先看一下我设置的access日志,这里我设置的pattern=combined

10.58.88.1 - - [02/Jul/2013:12:27:53 +0800] "GET /awstats/cgi-bin/awstats.pl?config=localhost HTTP/1.1" 404 952 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)"


pattern的参数:可以设置成common combined 或者手动定义

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

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

手动定义的参数如下:


%a      


这是记录访问者的IP,在日志里是127.0.0.1


%A


这是记录本地服务器的IP,在日志里是192.168.254.108


%b


这是发送信息的字节数,不涵括http头,如果字节数为0的话,显示为-


%B


tomcat的解释,没看出来与b%的区别,但我这里显示为-1,没想明白,望知道者告知,我把官方解释贴出来吧 Bytes sent, excluding HTTP headers


%h


这个就是服务器名称了,如果resolveHostsfalse的话,这里就是IP地址了,我的日志里是127.0.0.1


%H


访问者使用的协议,这里是HTTP/1.1


%l


这个也不太清楚,官方也说这个always return '-' 官方解释:Remote logical username from identd (可能这样翻译:记录浏览者进行身份验证时提供的名字)(always returns '-')


%m


访问的方式,是GET还是POST,我这是GET


%p


本地接收访问的端口,呵呵,我这里是80


%q


比如你访问的是aaa.jsp?bbb=ccc,那么这里就显示?bbb=ccc,明白了吧,这个qquerystring的意思


%r


官方解释:First line of the request (method  and request URI),不是很明白


%s


这个是http的状态,我这里返回的是304,咱们经常看见访问某个网页报错误500什么的,那也会返回500


%S


用户的session ID,这个session  ID大家可以另外查一下详细的解释,反正每次都会生成不同的session  ID


%t


这就是时间啦,好像有一个Common Log Format可以改,不过我没找到


%u


得到了验证的访问者,否则就是"-"


%U


访问的URL地址,我这里是/rightmainima/leftbott4.swf


%v


服务器名称,可能就是你url里面写的那个吧,我这里是localhost


%D


官方解释:Time taken to process the request,  in millis,应该是访问发生的时间,以毫秒记


%T


官方解释:Time taken to process the request,  in seconds,应该是访问发生的时间,以秒记


相关内容参考:http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html