Linux下的Tomcat日志分析

Tomcat日志机制

内部日志

Tomcat 的内部日志默认使用 JULI 组件,使用 java.util.logging 架构,能保证 Tomcat 内部日志与 Web 应用的日志保持独立。
Tomcat 的内部日志也可以利用 Log4j 框架进行配置。

Web应用日志

Tomcat 的Web应用可使用:

  • 系统日志 API,java.util.logging (若使用该API,则Web应用之间可以共享其元素)
  • Java Servlets 规范所提供的日志 API,javax.servlet.ServletContext.log(…)
java.util.logging(默认)

LogManager 组件能分辨运行在 Tomcat 上的不同 Web 应用,还能针对每一应用进行私有的日志配置。当 Web 应用未从内存中加载时,Tomcat 会给出通知,从而清除相应的引用类,防止内存泄露。但实际Tomcat会使用 JULI 来代替默认的 LogManager 实现。

JULI 默认启用,它支持每个类加载器配置。这意味着可以在下列层级来配置日志:

    全局范围:
    ${catalina.base}/conf/logging.properties 文件通过由启动脚本设置的系统属性 java.util.logging.config.file 来指定。
    如果它不可读或没有配置,默认采用 JRE 中的 ${java.home}/lib/logging.properties 文件。
    Web 应用范围:
    该文件为 WEB-INF/classes/logging.properties
Servlets logging

Tomcat 内部日志能够调用 javax.servlet.ServletContext.log(…) ,从而写入日志消息,其将被记录到一种特定类别中,命名方式如下:

org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}] 
Access log

日志内容格式描述

查看日志

 - cd home/tomcat/logs
//切换到日志目录
 - ls
//查看日志类型
 - tail -f catalina.out
//查看运行日志
 - tail -n xxx -f catalina.out
//查看最近xxx行日志内容
 - Ctrl+c 是退出tail命令
 - cat localhost.yyyy-mm-dd.log l grep 关键词
//通过关键词搜索查看日志
 - cat localhost.yyyy-mm-dd.log l grep 'xxxx-yy-zz'
//查看固定时间日志

日志分类

1> catalina.out
实时运行日志,指Tomcat的stdout和stderr
包含tomcat运行时的日志
应用中用system.out打印的内容应用中使用其他日志框架并配置向console输出的日志

  • 由 java.lang.ThreadGroup.uncaughtException(…) 所输出的未捕获异常。
  • 线程转储,如果通过系统信号来请求它们

默认不会自动切割日志

2> catalina.{yyyy-MM-dd}.log
tomcat运行日志,记录tomcat启动和暂停时的内容,会输出到catalina.out,但应用中向控制台输出的日志不会被记录在内。
若未采用log4j,则系统错误信息和打印语句也会被记录在内。

3> localhost.{yyyy-MM-dd}.log
应用初始化时(lfs)未被处理的异常被tomcat捕获后输出的日志,它也包含了tomcat启动和暂停时的运行日志。

4> localhost_access_log.{yyyy-mm-dd}.txt
访问tomcat的日志,记录访问tomcat的请求的所有地址、请求的路径、时间,请求协议以及返回码、状态码、时间、资源等信息,需要配置。

5> commons-daemon.日期.log
利用服务方式启动tomcat作为守护进程的日志记录,因为本机tomcat启动方式是以服务的方式启动的,索引产生这个日志文件记录了服务的启动状态。

7> tomcat7-stderr.日期.log
log4j的错误日志,因此在程序中要合理的捕捉异常。

8> tomcat7-stdout.日期.log  (类似于eclipse的控制台的信息)
程序中的System语句打印的日志(包括系统抛出的异常),是不能用打印语句进行系统调试的原因。

日志内容

catalina.{yyyy-MM-dd}.log

十月 20, 2022 11:44:20 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
十月 20, 2022 11:44:20 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version:        Apache Tomcat/7.0.72     
...
信息: Server built:          Oct 10 2022 12:12:26 UTC
信息: Server number:         7.0.72.0
信息: OS Name:               
信息: OS Version:            
信息: Architecture:          amd64
信息: Java Home:             
信息: JVM Version:           
信息: JVM Vendor:            Oracle Corporation
信息: CATALINA_BASE:         
信息: CATALINA_HOME:         
信息: Command line argument: -Dcatalina.home=根路径
信息: Command line argument: -Dcatalina.base=根路径
信息: Command line argument: -Djava.endorsed.dirs=根路径\endorsed
信息: Command line argument: -Djava.io.tmpdir=根路径\temp
信息: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
信息: Command line argument: -Djava.util.logging.config.file=根路径\conf\logging.properties
信息: Command line argument: exit
信息: Command line argument: -Xms3500m
...

commons-daemon.日期.log

[2022-10-20 15:45:49] [info]  [1706572] Commons Daemon procrun (1.0.15.0 64-bit) started
[2022-10-20 15:45:49] [info]  [1706572] Running 'Tomcat7' Service...
[2022-10-20 15:45:49] [info]  [1706632] Starting service...
[2022-10-20 15:45:49] [info]  [1706632] Service started in 1617 ms.
[2022-10-20 15:50:57] [info]  [1716024] Stopping service...
[2022-10-20 15:50:58] [info]  [1716024] Service stop thread completed.
[2022-10-20 15:50:59] [info]  [1706572] Run service finished.
[2022-10-20 15:50:59] [info]  [1706572] Commons Daemon procrun finished
[2022-10-20 15:51:21] [info]  [1711056] Commons Daemon procrun (1.0.15.0 64-bit) started
[2022-10-20 15:51:22] [info]  [1711056] Running 'Tomcat7' Service...
[2022-10-20 15:51:22] [info]  [1716072] Starting service...
[2022-10-20 15:51:23] [info]  [1716072] Service started in 1511 ms.

localhost_access_log.日期.txt

0:0:0:0:0:0:0:1 - - [14/Dec/2017:23:24:03 +0800] "GET /Exam/image/newsLogo.jpg HTTP/1.1" 304 -
0:0:0:0:0:0:0:1 - - [14/Dec/2017:23:24:06 +0800] "POST /Exam/train_findStudyTraincontentByFy.action HTTP/1.1" 200 25
0:0:0:0:0:0:0:1 - - [14/Dec/2017:23:24:06 +0800] "POST /Exam/newsIP_getTypeNews.action HTTP/1.1" 200 258
0:0:0:0:0:0:0:1 - - [14/Dec/2017:23:24:06 +0800] "POST /Exam/newsIP_getTypeNews.action HTTP/1.1" 200 2338

tomcat7-stderr.日期.log/tomcat7-stdout.日期.log

### 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

### set log levels - for more verbose logging change 'info' to 'debug' ###
#\u5728\u5F00\u53D1\u9636\u6BB5\u65E5\u5FD7\u7EA7\u522B\u4F7F\u7528debug
log4j.rootLogger=error, stdout
### \u5728\u65E5\u5FD7\u4E2D\u8F93\u51FAsql\u7684\u8F93\u5165\u53C2\u6570 ###
#log4j.logger.cn.xm.exam.mapper.exam=TRACE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值