文档章节

Tomcat日志设定

大圈
 大圈
发布于 2015/07/21 10:55
字数 1668
阅读 7
收藏 0

Tomcat日志概述

Tomcat 日志信息分为两类:

  • 运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息。

  • 访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。

访问日志

  • 启用访问日志

默认 tomcat 不记录访问日志,如下方法可以使 tomcat 记录访问日志

编辑${catalina}/conf/server.xml 文件(注:{catalina}是tomcat的安装目录),把以下的注释 (<!-- -->) 去掉即可。

1
2
3
4
5
<!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
         directory="logs"  prefix="localhost_access_log." suffix=".txt"
         pattern="common" resolveHosts="false"/>
  -->
  • 配置tomcat写出更详细的日志

通过对 2.1 示例中 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"

对 于各 fields 字段的含义请参照:

http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html 中的 Access Log Valve 项。

  • %a - Remote IP address

  • %A - Local IP address

  • %b - Bytes sent, excluding HTTP headers, or '-' if zero

  • %B - Bytes sent, excluding HTTP headers

  • %h - Remote host name (or IP address if resolveHosts is false)

  • %H - Request protocol

  • %l - Remote logical username from identd (always returns '-')

  • %m - Request method (GET, POST, etc.)

  • %p - Local port on which this request was received

  • %q - Query string (prepended with a '?' if it exists)

  • %r - First line of the request (method and request URI)

  • %s - HTTP status code of the response

  • %S - User session ID

  • %t - Date and time, in Common Log Format

  • %u - Remote user that was authenticated (if any), else '-'

  • %U - Requested URL path

  • %v - Local server name

  • %D - Time taken to process the request, in millis

  • %T - Time taken to process the request, in seconds

  • %I - current request thread name (can compare later with stacktraces)

  • %{xxx}i for incoming headers

  • %{xxx}o for outgoing response headers

  • %{xxx}c for a specific cookie

  • %{xxx}r xxx is an attribute in the ServletRequest

  • %{xxx}s xxx is an attribute in the HttpSession

运行日志

日志类型与级别

  • Tomcat日志分为5类:catalina 、localhost 、manager 、admin 、host-manager

  • 日志的级别分为7种:SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

设定日志级别

修改 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

应用程序日志或系统日志

输出详细系统日志

使用Log4j输出详细系统日志信息,快速诊断启动故障

此例可弥补tomcat启动异常时输出的错误信息不足的问题,使用commons-logging和log4j搭配输出详尽的日志信息。

以window环境下tomcat5.5.27为例:

  • tomcat解压目录为:E: /tomcat5.5

  • 设置环境变量:CATALINA_HOME=E: /tomcat5.5

  • 下载 log4j 与 commons-logging

  • 本例将 commons-logging-1.1.1.jar 与 log4j-1.2.15.jar 放在 %TOMCAT_HOME%/bin 目录下(可根据需要放置在其位置)

  • 在 %TOMCAT_HOME%/bin 目录下新建两个文件 commons-logging.properties 、log4j.properties

  • commons-logging.properties 文件内容如下:

    1
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
  • log4j.properties 文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    log4j.rootLogger=WARN,stdout, file
     
    ## 日志直接输出到控制台 ###
     
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
     
    ## 日志输出到文件 SystemOut.log ###
    log4j.appender. file =org.apache.log4j.FileAppender
    log4j.appender. file .File=E: /tomcat5 .5/ logs /SystemOut .log
    log4j.appender. file .Append= false
    log4j.appender. file .layout=org.apache.log4j.PatternLayout
    log4j.appender. file .layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
  • 该配置文件可详细参照:http://www.minaret.biz/tips/tomcatLogging.html#log4j_properties

  • 修改 catalina.bat 文件

    将
    set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%/bin/bootstrap.jar
    替换为
    set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%/bin/bootstrap.jar;%CATALINA_HOME%/bin/commons-logging-1.1.jar;%CATALINA_HOME%/bin/log4j-1.2.13.jar;%CATALINA_HOME%/bin
  • 通过startup.bat启动就会用log4j来输出启动日志了。

  • 在E:/tomcat5.5/logs/SystemOut.log文件中查看输出的日志

应用程序中使用log4j

  • 从如下网址下载log4j:http://logging.apache.org/log4j/1.2/download.html

  • 创建Java工程。

  • 添加log4j.jar到工程的编译路径下。

  • 创建名称为log4j.properties的文件,写入如下内容:

    1
    2
    3
    4
    5
    6
    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    log4j.rootLogger=debug, stdout
  • 创建类并添加如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import org.apache.log4j.Logger;
    public class LogClass {
             private static org.apache.log4j.Logger log = Logger
                             .getLogger (LogClass. class );
             public static void main(String[] args) {
                     log .trace( "Trace" );
                     log .debug( "Debug" );
                     log .info( "Info" );
                     log .warn( "Warn" );
                     log .error( "Error" );
                     log .fatal( "Fatal" );
             }
    }
  • 编译运行,可在控制台中看到如下内容:

    10:38:24,797 DEBUG LogClass:11 - Debug
    10:38:24,812  INFO LogClass:12 - Info
    10:38:24,812  WARN LogClass:13 - Warn
    10:38:24,812 ERROR LogClass:14 - Error
    10:38:24,812 FATAL LogClass:15 - Fatal
  • 根据级别控制日志输出内容:

    将 log4j.rootLogger= debug , stdout 变更为 log4j.rootLogger=Warn, stdout
    
    输出内容如下:
    
    10:41:15,488  WARN LogClass:13 - Warn
    10:41:15,504 ERROR LogClass:14 - Error
    10:41:15,504 FATAL LogClass:15 – Fatal

更改日志输出内容

  • log4j.rootCategory=INFO, stdout , R

此句为将等级为INFO的日志信息输出到stdout和R这两个目的地。

等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO,WARN,ERROR的log信息,而DEBUG信息不会被显示。

  • log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪种类型,可以是:

org.apache.log4j.FileAppender 文件
org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方
  • log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪种类型

org.apache.log4j.HTMLLayout 以HTML表格形式布局
org.apache.log4j.PatternLayout 可以灵活地指定布局模式
org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息
  • log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用 pattern 布局就要指定的打印信息的具体格式 ConversionPattern ,打印参数如下:

具体的设定参照:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以指定格式,如:%d{yyyymmddHH:mm:ss,SSS},输出:2002101822:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
[QC] 是log信息的开头,可以为任意字符,一般为项目简称。

Log4j相关资料


本文转载自:http://xstarcd.github.io/wiki/Java/tomcat_log.html

大圈
粉丝 4
博文 57
码字总数 21291
作品 0
朝阳
系统管理员
私信 提问
apache+tomcat 整合

本篇文章参考网上文档,以及自己实际操作而整合。 linux是最常用的web服务器,本节我们将通过整合apache和tomcat构建一个java/jsp运行平台,详细介绍web服务器的搭建过程。 一、 apache与tom...

zhui_yi_520
2018/06/26
0
0
Windows安装配置Tomcat

首先要保证已经安装配置好了JDK环境! Apache tomcat 是目前最为流行的java网站开发的服务器软件。下面介绍一下tomcat 8的安装流程。 进入apache官网下载tomcat8。根据你操作系统选择不同的下...

临江仙卜算子
2018/04/26
0
0
centos7 同时管理多个tomcat

#!/bin/bash author: Sean Chow (seanlook7@gmail.com) chkconfig: 345 80 15 description: Multiple tomcats service management script. # Source function library. . /etc/rc.d/init.d/f......

itlzm
2018/01/21
0
0
WEB请求处理四:Tomcat配置实践

WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 WEB请求处理三:Servlet容器请求处理 WEB请求处理四:Tomcat配置实践 上篇文章《WEB请求处理三:Servlet...

陶邦仁
2016/07/05
332
2
centos 5.6 nginx+tomcat搭建网站

一、安装jdk 1.下载jdk.1.6(选择适合自己版本) 从官方网站上下载jdk。http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-1836443.html 下载下来传到服务器上去 ...

sunyuansheng7
2014/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker百万连接设置相关资料

借助Docker单机秒开数十万TCP连接

youngjdong
12分钟前
0
0
这可能是史上最全 Redis 高可用解决方案总结

本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。 一、常见使用方式 Redis 的几种常见使用方式包括: 1.Redis 单副本; 2.Redis 多副本(主从); 3.Redis Sentinel(哨兵); 4....

别打我会飞
15分钟前
0
0
Qt编写数据可视化大屏界面电子看板11-自定义控件

一、前言 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编...

飞扬青云
17分钟前
0
0
第二讲:编写UDP Socket小程序

1、编写服务器端代码 文件-->新建 新建一个控制台程序: 下面用的是一张旧图,只要点确认就可以了。 切换到FileView视图 编译、链接 StdAfx.cpp( 里面的代码不用修改) 编辑UDPServer.cpp文...

一匹狼工作室
18分钟前
1
0
android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)

Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 老版本 链接:https://blog.csdn.net/DickyQie/...

切切歆语
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部