关于 Tomcat 日志

Tomcat目录

安装目录:/usr/local/apache-tomcat-9.0.52
数据目录:/data/app/tomcat-weixinapp-820{2..6}

定义日志格式

[root@node3 ~]# vim /usr/local/apache-tomcat-9.0.52/conf/server.xml
....
....
# 定义数据文件位置
<Context docBase="/data/code/tomcat-weixinapp/tomcat-weixinapp" path="" reloadable="false" />
========================= 定义 localhost_access_log 日志格式 开始================================
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/home/logs" ===> directory要改
prefix="localhost_access_log" suffix=".log"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
========================= 定义 localhost_access_log 日志格式 结束================================
</Host>
</Engine>
</Service>
</Server>
参数详解:
className:官方说明必须按照默认配置不可更改。
directory:日志文件位置。
prefix:日志文件前缀。
suffix:日志文件后缀。
pattern:日志模式参数,设置参数很丰富,参数说明见下表。
resolveHosts:如果这个值是true的话,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址。
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 - 处理请求的时间,以秒为单位

定义日志等级和日志位置目录

方法1、
[root@node3 ~]# vim /path/to/path/tomcat/bin/catalina.sh
····
····
if [ -z "$CATALINA_OUT" ] ; then
# CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
CATALINA_OUT=/home/logs/catalina.out ===>要改
fi
方法2、
[root@node3 ~]# vim /usr/local/apache-tomcat-9.0.52/conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.level = FINE ===>日志等级
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs ===>日志位置,可更改
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. ===>日志开头符
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8 ===>字符集
# 2localhost.org.apache.juli.AsyncFileHandler.level = FINE
# 2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
# 2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
# 2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
# 2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
# 3manager.org.apache.juli.AsyncFileHandler.level = FINE
# 3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
# 3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
# 3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
# 3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
# 4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
# 4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
# 4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
# 4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
# 4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8

日志等级

[root@node3 ~]# vim /usr/local/apache-tomcat-9.0.52/conf/logging.properties
Log level Description
SEVERE:(highest) Captures exception and Error
WARNING:Warning messages
INFO:Informational message, related to the server activity
CONFIG: Configuration message
FINE:Detailed activity of the server transaction (similar to debug)
FINER:More detailed logs than FINE
FINEST:(least) Entire flow of events (similar to trace)

日志切割

[root@node3 ~]# vim /etc/logrotate.d/tomcatrotate
/data/app/tomcat-8202/logs/catalina.out{
daily
rotate 15
missingok
dateext
compress
notifempty
copytruncate
dateext
dateformat -%Y-%m-%d
}
/data/app/tomcat-8203/logs/catalina.out{
daily
rotate 15
missingok
dateext
compress
notifempty
copytruncate
dateext
dateformat -%Y-%m-%d
}
# 立即截断日志
[root@node3 ~]# logrotate --force /etc/logrotate.d/tomcatrotate
选项注释
-f:选项来强制logrotate轮循日志文件
-v:参数提供了详细的输出
# 要为某个特定的配置调用logrotate,执行一次切割任务测试
[root@node3 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcatrotate
# 设置logrotate定时任务
[root@node3 ~]# crontab -e
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcatrotate & >/dev/null
# 重启crond
[root@node3 ~]# systemctl restart crond
[root@node3 ~]# for i in {2..6};do ll -h /data/app/tomcat-weixinapp-820$i/logs/catalina.out-20210830.gz;done
-rw-r----- 1 tomcat root 73M Aug 30 21:20 /data/app/tomcat-weixinapp-8202/logs/catalina.out-20210830.gz
-rw-r----- 1 tomcat root 23M Aug 30 21:20 /data/app/tomcat-weixinapp-8203/logs/catalina.out-20210830.gz
-rw-r----- 1 tomcat root 4.3M Aug 30 21:25 /data/app/tomcat-weixinapp-8204/logs/catalina.out-20210830.gz
-rw-r----- 1 tomcat root 27M Aug 30 21:25 /data/app/tomcat-weixinapp-8205/logs/catalina.out-20210830.gz
-rw-r----- 1 tomcat root 49M Aug 30 21:37 /data/app/tomcat-weixinapp-8206/logs/catalina.out-20210830.gz
posted @   Linux大魔王  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示