Linux 如何处理tomcat/springboot进程控制台日志

这篇具有很好参考价值的文章主要介绍了Linux 如何处理tomcat/springboot进程控制台日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

应用场景

Tomcat catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stderr会重定向到这里。所以我们在应用里使用System.out打印的东西都会到这里来。另外,如果我们在应用里使用其他的日志框架,配置了向Console输出的,则也会在这里出现。

如果Tomcat的catalina.out的大小超过了2G,那么tomcat可能在没有错误提示的情况下崩溃、无法启动。所以为了避免出现这个问题,我们应该每天分割catalina.out。

Springboot启动脚本中输出了应用日志nohup java -jar [jvm param] xxx.jar 2 >&1 > nohup.out,并且在logback中配置了输出到控制台,这样会导致所有的应用日志都会输出到nohup.out

随着时间的累计控制台日志回越来越大,我们可以从以下几点进行处理,防止出现控制台日志大量输出导致磁盘溢出。

方案

1.禁止输出到控制台中

① 删除项目中所有的system.out.print[ln]
② springboot 可以在logback/log4j中禁止输出到控制台
③ springboot启动脚本修改为 nohup java -jar [jvm param] xxx.jar 2 >&1 > /dev/null,将进程日志输出到空文件中。

2.使用logrotate切割、压缩、删除过期文件

logrotate是一个Linux上的日志文件轮换工具,它可以自动轮换日志文件并保留历史日志,防止磁盘被日志文件填满。

使用logrotate可以将日志文件按时间或大小等规则切割成多个文件,同时可以删除或压缩旧日志文件,避免磁盘空间占用过高。

logrotate的配置文件通常在/etc/logrotate.conf/etc/logrotate.d目录下,通过配置文件可以指定需要轮换的日志文件、轮换规则、保存历史日志的数量等参数。
logrotate可以周期性地执行轮换任务,可以手动执行logrotate来立即轮换日志文件,也可以通过systemdtimer来定时执行。
总的来说,logrotate是一个非常实用的日志处理工具,能够有效地管理Linux系统中的日志文件,保障系统的稳定运行。

简单配置样例:
首先在/etc/logrotate.d/目录创建一个tomcat文档,内容如下:

/data/apache-tomcat-9.0.13/logs/catalina.out
{
    copytruncate
    daily   
    rotate 10
    compress   
    missingok   
    size 16M  
}

配置说明:

compress:启用日志文件压缩。被切割的日志文件将以.gz的扩展名进行压缩保存。
delaycompress:延迟压缩。在下一次轮转周期时,才对前一个周期的日志文件进行压缩。
nocompress:禁用压缩。不对切割的日志文件进行压缩处理。
copytruncate:将当前日志文件进行备份后,截断原始日志文件,使其从头开始。通常用于不支持日志文件重新打开的程序。
nocopytruncate:禁用copytruncate选项,不进行备份和截断操作。
create:创建一个新的空日志文件,以替代被切割的日志文件。
nocreate:禁用create选项,不创建新的日志文件。
ifempty:如果日志文件为空,也进行切割。否则,不进行切割。
notifempty:只有当日志文件非空时,才进行切割。
daily:按每天为周期进行日志文件的切割。
weekly:按每周为周期进行日志文件的切割。
monthly:按每月为周期进行日志文件的切割。
yearly:按每年为周期进行日志文件的切割。
rotate count:保留的切割文件数量。默认情况下,logrotate会保留最近的count个切割文件,其他文件将被删除。
maxsize size:设置日志文件的最大大小。当日志文件达到指定的大小时,将触发切割。
minsize size:设置日志文件的最小大小。当日志文件小于指定的大小时,将不触发切割。
dateext:为每个切割文件添加日期扩展。切割文件将使用日期作为后缀。
dateformat format:自定义日期扩展的格式。可以使用%Y(年份)、%m(月份)、%d(日期)等占位符。

以上是常见的logrotate配置选项,可以根据需要进行组合和配置。配置文件通常位于/etc/logrotate.conf或/etc/logrotate.d/目录下。每个日志文件都需要一个单独的配置条目,可以在配置文件中添加多个条目来处理不同的日志文件。配置完成后,logrotate将按照指定的规则自动管理和切割日志文件。

自动切割:

每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务。
这个会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux安装的,它会执行这个命令-“/etc/sbin/logrotate /etc/logrotate.conf”(注意空格)。
/etc/logrotate.conf 包含了/etc/logrotate.d目录下的所有脚本。这个会触发上一步写的/etc/logrotate.d/tomcat文件。

手动切割:
执行以下语句来手动运行cron任务

/usr/sbin/logrotate /etc/logrotate.conf
# 或
logrotate -vf /etc/logrotate.d/tomcat 

3.自定义处理
可以使用Java、shell来切割,但这样存在很多风险,要考虑IO、文件权限、压缩大小、清理日期等等。既然有开源工具咱就用起来,不要重复造轮子。当然除非现有的工具已经满足不了你的需求。文章来源地址https://www.toymoban.com/news/detail-562279.html

到了这里,关于Linux 如何处理tomcat/springboot进程控制台日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决idea启动tomcat控制台中文乱码

    如图这种情况,一般在idea用tomcat跑一个web项目启动后tomcat日志在控制台打印出来会出现中文乱码的情况 解决方案1: tomcat的日志配置文件的编码修改,找到tomcat安装目录conf下的logging.properties,encoding都修改成GBK或者UTF-8试试,当然我这种没成功  解决方案2: 修改idea显示编码

    2024年02月11日
    浏览(82)
  • IDEA启动tomcat控制台中文乱码问题

    IntelliJ IDEA是很多程序员必备且在业界被公认为最好的Java开发工具,有很多小伙伴在安装完IDEA并且tomcat之后,启动tomcat会出现控制台中文乱码问题,如下图所示: 具体解决步骤: 一、修改当前 Web 项目 Tomcat Server 的虚拟机输出选项 二、修改 IntelliJ IDEA 全局编码、项目编码、

    2024年02月11日
    浏览(61)
  • 对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理?

    对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理? 比如,你在运行你的代码的时候 它总在python控制台运行,十分难受 在pycharm中设置下即可,很简单 选择运行 点击编辑配置 将使用python控制台运行勾掉 点击保存即可!

    2024年02月11日
    浏览(50)
  • 解决IDEA tomcat控制台只有server日志

    2024年02月11日
    浏览(46)
  • 记一次Tomcat控制台弱口令爆破事件应急响应

    某内部应急演练中,安全部门在安全设备上观察到大量Tomcat控制台登录请求,现需根据流量情况进行安全事件分析。 Apache Tomcat是Apache 软件基金会的一款中间件。其中Manager App控制台容易被攻击者利用,通过弱口令爆破或者默认口令登录。 控制台页面存在Deploy功能,且可以通

    2024年02月11日
    浏览(56)
  • 4 种方法完美解决 IntelliJ IDEA Tomcat 控制台中文乱码问题

    上方导航栏“Run→Edit Configurations…”进入配置页面,修改当前 Web 项目 Tomcat Server 的虚拟机输出选项 VM options 添加 -Dfile.encoding=UTF-8 。在重启之后运行程序检查控制台信息,如果不管用请执行下面的步骤。 上方导航栏“File→Settings…”进入配置页面,在“Editor”中下滑找到“

    2024年02月16日
    浏览(62)
  • windows下tomcat控制台按天输出catalina.out日志

    windows服务器情况下,无法和linux服务器一样,启动web服务之后,直接tail查看日志,而windwos控制台的输出空间有限,如果遇到大量错误的情况下,console日志刷新太快,无法看到首次错误是在哪里出现的,会产生很多不必要的麻烦,所以从网上查找了windows控制台信息输出到文件

    2024年02月05日
    浏览(54)
  • IDEA中创建web项目(配置tomcat,tomcat启动报程序包javax.servlet.http不存在,tomcat控制台乱码问题)

    在浏览器地址栏输入: http://localhost:8080/webidea/ 单击工具栏按钮 1、 点击Help = Edit custom VM Options,在最后面添加 “-Dfile.encoding=UTF-8” 2、点击Run菜单的 Edit Configurations,在tomcat配置中的 VM option中添加 “-Dfile.encoding=UTF-8” 3、在第二步的Startup/Connection页签的Run和Debug添加一个key为

    2024年02月21日
    浏览(116)
  • 关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?

    问题描述: 原因是;CATALINA_BASE里面没有相关的文件配置。而之前学习IDEA的时候,把这个文件的位置改变了。导致,最后输出IDEA的时候,不会把日志也打印出来。 检查IDEA配置; D:work_softtomcat_userTomcat10.0bin 在此目录下,找到;catalina.bat文件 检查是否改变了,原先我的配置里面

    2024年02月07日
    浏览(75)
  • springboot+mysql+mybatis如何实现控制台打印sql

    在Spring Boot中使用MyBatis与MySQL,并希望在控制台打印SQL语句,你可以通过配置MyBatis的日志级别来实现。以下是具体步骤: 添加依赖: 确保你的项目中包含了MyBatis和MySQL的相关依赖。在 pom.xml 文件中添加如下依赖: 配置application.properties或application.yml: 在 application.properties 或

    2024年02月01日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包