项目日志规范及其配置

来源:互联网 发布:人工智能压力变送器 编辑:程序博客网 时间:2024/06/07 05:32

http://blog.sina.com.cn/s/blog_6d5fee1201011ltp.html


项目的所有日志(包括项目自身输出日志和服务器输出日志)放在服务器根目录的 logs子目录下,规范为:

http访问日志放在access.log,http异常日志放在error.log,tomcat服务器正常输出放在stdout.log,应用或服务器异常输出到stderr.log,其他应用日志记录在xxx.log,xxx表示一个业务对象或一个模块。

一、Tomcat6.0日志配置

为了精确控制日志输出的级别和内容,我们使用log4j替换Tomcat默认的日志包。首先需要下载三个相关的包:tomcat-juli.jar、tomcat-juli-adapters.jar和一个log4j的包(1.2以上版本如log4j-1.2.15.jar)。注意:tomcat-juli.jar和Tomcat自带的不一样,需要替换原有的包。这三个包的下载地址分别为

http://www.apache.org/dist/tomcat/tomcat-6/v6.0.16/bin/extras/tomcat-juli.jar

http://www.apache.org/dist/tomcat/tomcat-6/v6.0.16/bin/extras/tomcat-juli-adapters.jar

http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.15/apache-log4j-1.2.15.zip

然后作如下配置

1、将tomcat-juli-adapters.jar和log4j-1.2.15.jar放置在${catalina.home}/lib目录下;

2、将tomcat-juli.jar放置在${catalina.home}/bin目录下;

3、在${catalina.home}/lib下新建一个文件log4j.xml,作为log4j的配置文件,文件内容为

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

   <appender name="console" class="org.apache.log4j.ConsoleAppender">

      <layout class="org.apache.log4j.PatternLayout">

          <param name="ConversionPattern" value="%d %p [%c] %m%n"/>

      </layout> 

   </appender>

  <appender name="stdout" class="org.apache.log4j.RollingFileAppender">

    <param name="File" value="${catalina.home}/logs/stdout.log"/>

    <param name="Append" value="true"/>

    <param name="MaxFileSize" value="1000KB"/>

    <param name="MaxBackupIndex" value="2"/>

    <layout class="org.apache.log4j.PatternLayout">

      <param name="ConversionPattern" value="%d %p [%c] %m%n"/>

    </layout>

    <filter class="org.apache.log4j.varia.LevelRangeFilter">

       <param name="LevelMin" value="INFO" />

       <param name="LevelMax" value="INFO" />

    </filter>

  </appender>

  <appender name="stderr" class="org.apache.log4j.RollingFileAppender">

     <param name="File" value="${catalina.home}/logs/stderr.log"/>

     <param name="Append" value="true"/>

     <param name="MaxFileSize" value="1000KB"/>

     <param name="MaxBackupIndex" value="2"/>

     <layout class="org.apache.log4j.PatternLayout">

       <param name="ConversionPattern" value="%d %p [%c] %m%n"/>

     </layout>

     <filter class="org.apache.log4j.varia.LevelRangeFilter">

        <param name="LevelMin" value="WARN" />

     </filter>

  </appender>

   <root>

      <level value="INFO"/>

      <appender-ref ref="console"/> 

      <appender-ref ref="stdout"/>

      <appender-ref ref="stderr"/>

   </root>

</log4j:configuration>

在这里设置了三个appender,分别用于输出控制台(console)、服务器正常输出(stdout..log)和服务器异常输出(stderr.log)。

4、删除Tomcat6.0原有的log配置文件${catalina.home}/conf/logging.properties;

5、在${catalina.home}/conf/server.xml中找到需要输出访问日志的<Host>元素,在其下增加一个<Valve>元素,设定其className="org.apache.catalina.valves.AccessLogValve" ,这样服务器就会输出访问日志。

Valve元素提供了许多属性,使得用户可以需要精确定制访问日志的格式和内容:

(1) className -实现的Java类名,一般被设置成org.apache.catalina.valves.AccessLogValve。 

(2) directory 存放日志文件的目录,可以是相对路径或者绝对路径。如果使用相对路径,是指相对于 $CATALINA_HOME的路径。如果不指定directory属性,缺省值是"logs"(相对于 $CATALINA_HOME)。 

(3) pattern 需要记录的请求/响应不同信息域的格式布局。如果是"common"或者"combined",说明选择标准格式,下面会有关于配置这个属性的更多信息。 

(4) prefix 日志文件名的前缀。如果没有指定,缺省值是"access_log."。如果不想使用前缀,使用长度为0的字符串。 

(5) resolveHosts 将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。 

(6) suffix 日志文件名的后缀。如果没有指定,缺省值是""。如果不想使用后缀,使用长度为0的字符串。 

(7) rotatable 缺省值为true,用来决定日志是否翻转的标志。如果为false,日志文件永远不翻转,并且忽略fileDataFormat。要谨慎使用。 

(8) condition 打开条件日志,默认为“drop”。如果设置了这个属性,只有在ServletRequest.getAttribute()是null的时候,才会为请求创建日志。比如,如果 condition设为junk,则只有在Servlet.getAttribute("junk")==null的时候,才会记录这个请求。

(9) fileDateFormat -日志文件名称中使用定制的日期格式。日志的格式也决定了日志文件翻转的频率,如果想每个小时翻转一次,将这个值设为yyyy-MM-dd.HH 

(10) pattern属性值由字符串常量和pattern标识符加上前缀"%"组合而成。pattern标识符加上前缀"%",用来代替当前请求/响应中的对应的变量值。目前支持如下的pattern:

%a 远端IP地址 

%A 本地IP地址 

%b 发送的字节数,不包括HTTP头,如果为0,使用"-" 

%B 发送的字节数,不包括HTTP头 

%h 远端主机名(如果resolveHost=false,远端的IP地址) 

%H 请求协议 

%l 从identd返回的远端逻辑用户名(总是返回 "-") 

%m 请求的方法(GET,POST) 

%p 收到请求的本地端口号 

%q 查询字符串(如果存在,以 '?'开始) 

%r 请求的第一行,包含了请求的方法和URI 

%s 响应的状态码 

%S 用户的session ID 

%t 日志和时间,使用通常的Log格式 

%u 认证以后的远端用户(如果存在的话,否则为'-') 

%U 请求的URI路径 

%v 本地服务器的名称 

%D 处理请求的时间,以毫秒为单位 

%T 处理请求的时间,以秒为单位 

一个典型的访问日志的配置如下:

<Valve className="org.apache.catalina.valves.AccessLogValve" fileDateFormat="yyyy-MM-dd" pattern="%h %t %U %s %b %{Referer}i %{User-Agent}i" prefix="access." suffix=".log" directory="/logs" condition="drop"/>

该配置在logs目录下输出名为access.yyyy-mm-dd.log的日志文件,每天输出一个。日志中每一行的内容包括:请求主机名、时间、访问的URL、状态码、客户输入地址、客户浏览器信息。

二、Tomcat5.5日志配置

Tomcat5.5下的日志配置和6.0版本有不少区别,除了必须的log4j的包以外,它不需要tomcat-juli.jar和tomcat-juli-adapters.jar,但需要添加common-logging包(例如common-logging-1.1.1.jar)。

配置的步骤如下:

1、将common-logging-1.1.1.jar和log4j-1.2.15.jar放置在${catalina.home}/common/lib目录下;

2、将log4j.xml配置文件放在${catalina.home}/common/classes目录下;

3、删除Tomcat5.5原有的log配置文件${catalina.home}/conf/logging.properties;

4、在${catalina.home}/conf/server.xml中找到需要输出访问日志的<Host>元素,在其下增加一个<Value>元素,以输出访问日志。具体配置方法参见前一节Tomcat6.0日志配置。

0 0