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 "%r" %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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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 热点速览」