下面我们简单的介绍一下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 | 这个就是服务器名称了,如果resolveHosts为false的话,这里就是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,明白了吧,这个q是querystring的意思 |
%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
转载于:https://blog.51cto.com/ontheway2015/1246739