关于按天切割Tomcat的catalina.out日志文件的配置

server/2024/11/28 7:01:40/

1、catalina.out 是 Tomcat 的标准输出和标准错误日志,通常输出到 Tomcat 安装目录下的 logs 文件夹中。这个日志文件会记录 Tomcat 启动、停止以及运行过程中产生的所有日志信息。

2、在Apache Tomcat中,日志文件catalina.out默认情况下不会自动按天切割。为了实现这一功能,通常有几种方法可以采用:

一、修改Tomcat的JULI日志配置

Tomcat不支持切割文件,但官方提供了日志文件输出的配置,在目录Tomcat**/conf/logging.properties里。
包括localhostmanagerhost-managercatalina等日志的输出配置。
要实现按天切割,翻译过来就是“输出日志到今天的文件里”,虽然实现了,但理念还是有区别的:
在来的基础上加以下这行代码:

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.pattern = yyyy-MM-dd

扩展:

1catalina.org.apache.juli.AsyncFileHandler.suffix = .%g
1catalina.org.apache.juli.AsyncFileHandler.suffix = .out

说明:
Tomcat从版本7开始支持Java Util Logging (JUL) API,可以通过修改logging.properties文件来改变日志记录的行为,包括日志分割。但这种方法相对复杂,且不如第二种直接。

二、使用logrotate工具

logrotate 是一个用于管理日志文件的工具,它可以自动分割、压缩、删除和邮寄日志文件。通过配置 logrotate,我们可以轻松实现 catalina.out 按日期分割的需求。

我们需要在 Linux 系统上安装 logrotate(通常默认已安装)。
如何判断linux是否自带logrotate?

# 判断是否已安装的几个命令
which logrotate
whereis logrotate
...

在/etc/logrotate.d/目录下创建或编辑一个针对Tomcat的日志配置文件,例如tomcat-catalina

/path/to/tomcat/logs/catalina.out {daily                # 按天分割日志文件rotate 7             # 保留最近7个日志文件missingok            # 如果日志文件不存在,不报错notifempty           # 如果日志文件为空,不分割compress             # 压缩分割后的日志文件delaycompress        # 延迟压缩到下一个周期,确保当前周期的日志文件可用copytruncate         # 复制并截断原文件,而不是移动并创建新文件(避免Tomcat因文件被移动而丢失输出)create 0640 tomcat tomcat # 以指定权限和所有者创建新日志文件postrotate# 在分割日志后执行的命令,这里可以重启Tomcat的日志输出(可选)# 但重启Tomcat可能会影响服务,通常不需要这样做# /path/to/tomcat/bin/shutdown.sh# /path/to/tomcat/bin/startup.sh# 或者,更简单地,向Tomcat发送HUP信号以重新打开日志文件(如果Tomcat支持)# kill -HUP $(cat /path/to/tomcat/logs/tomcat.pid)# 注意:上面的命令需要Tomcat配置了PID文件的路径endscript
}

‌注意‌:

  • /path/to/tomcat/ 需要替换为你的 Tomcat 安装路径。
  • copytruncate 选项用于在不停止 Tomcat 的情况下截断日志文件。但请注意,这要求 Tomcat 的日志输出是通过标准的文件描述符(如 stdout 或 stderr)进行的,并且 Tomcat 能够处理文件被截断的情况。如果 Tomcat 是通过重定向输出到 catalina.out 的方式记录日志的,那么可能需要考虑其他方法(如重启 Tomcat 或发送信号)来重新打开日志文件。然而,在生产环境中重启 Tomcat 可能会带来不必要的风险,因此通常建议使用 copytruncate 或确保 Tomcat 能够处理文件截断。
  • postrotate 脚本块中的命令是在每次分割日志后执行的。这里提供了一些可选的命令,但请根据你的实际情况谨慎使用。特别是重启 Tomcat 的命令,可能会影响到正在运行的服务。
  • 测试分割功能,确保分割后的日志文件完整且符合预期
  • 部署:logrotate 通常由系统的 cron 服务定期调用。在大多数 Linux 发行版中,logrotate 的主配置文件(通常是 /etc/logrotate.conf)会包含一个 cron 任务,用于每天运行 logrotate。因此,你不需要手动设置 cron 任务。只需确保你的 logrotate 配置文件(如 /etc/logrotate.d/tomcat-catalina)被正确包含在主配置文件中即可。

附:无注释版:

/tomcat**/logs/catalina.out {dailyrotate 7missingok    notifempty   compress     delaycompresscopytruncate create 0640 tomcat tomcatpostrotateendscript
}

三、使用cron任务配合脚本

这种方法未试验~

《The End》


http://www.ppmy.cn/server/145557.html

相关文章

.NET9 - Swagger平替Scalar详解(四)

书接上回,上一章介绍了Swagger代替品Scalar,在使用中遇到不少问题,今天单独分享一下之前Swagger中常用的功能如何在Scalar中使用。 下面我们将围绕文档版本说明、接口分类、接口描述、参数描述、枚举类型、文件上传、JWT认证等方面详细讲解。…

Kubernetes 还是 SpringCloud?

前些年,随着微服务的概念提出以及落地,不断有很多的公司都加入到了这场技术革新中,现在可谓是人人都在做和说微服务。 提到微服务,Java栈内,就不得不提SpringBoot、SpringCloud、Dubbo。 近几年,随着Cloud …

远离网上的广告和无用信息,自己动手搭建Tipask问答网站

文章目录 前言1.Tipask网站搭建1.1 Tipask网站下载和安装1.2 Tipask网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置) 3. 公网访问测试4. 结语 前…

C++——多态(下)

目录 引言 多态 4.多态的原理 4.1 虚函数表指针 4.2 多态的原理 5.单继承和多继承关系的虚函数表 5.1 单继承中的虚函数表 5.2 多继承中的虚函数表 结束语 引言 接下来我们继续学习多态。 没有阅读多态(上)的可以点击下面的链接哦~ C——多态…

RabbitMQ的预取值详解

RabbitMQ的预取值(Prefetch Value)是一个关键概念,它决定了消费者在从队列中获取消息时,一次性可以获取的消息数量。这一机制对于优化消息分发和消费者的负载均衡至关重要。 什么是RabbitMQ的预取值? 预取值是指消费者…

前端项目的动态路由实现(vue)

一、引言 动态路由,很多场景是,有些页面必须是某些用户或者某些角色才能访问,所以呢,前端的代码即使不给页面的入口,但是要是直接在地址栏敲入相关地址页面还是可以被访问到。为了杜绝这种情况,就用到了动…

表的操作DDL

创建表 character set 字符集 collate 校验规则 engine 存储引擎;属性要用 ‘,’ 隔开,最后一个属性不加 ‘,’ ,不要忘了括号其中charset utf8 collate utf8_general_ci engine MyIsam;可以不写 create database usr_db; use usr_db; //创建表 user1 c…

【vue3实现微信小程序】设置项目底部tab页面切换标签

快速跳转: 我的个人博客主页👉:Reuuse博客 新开专栏👉:Vue3专栏 参考文献👉:uniapp官网 免费图标👉:阿里巴巴矢量图标库 ❀ 感谢支持!☀ 前情提要 &#x…