今天聊一个运维中常见的问题:在CentOS上跑Ja va应用,日志轮转是怎么搞的?

其实核心方案就两种,一种是系统级的工具,另一种是Ja va框架自带的机制。下面分别来看。
1. 使用 logrotate 工具
logrotate 是系统级的日志管理工具,能自动轮转、压缩、删除日志文件,说白了就是帮你把日志文件管得明明白白的。配置起来也不复杂。
配置步骤:
安装
logrotate(如果还没装的话):sudo yum install logrotate创建或编辑配置文件。通常Ja va应用日志放在
/var/log/下,可以新建一个专属配置文件,比如/etc/logrotate.d/myapp:sudo nano /etc/logrotate.d/myapp添加配置内容。假设日志文件是
/var/log/myapp.log,一个典型的配置长这样:/var/log/myapp.log {dailyrotate 7compressdelaycompressmissingoknotifemptycreate 640 root adm}每个参数的意思也很直接:
daily:每天轮转一次。rotate 7:保留最近7个轮转后的日志。compress:旧日志压缩。delaycompress:延迟压缩,等到下次轮转再压缩。missingok:日志文件丢了也不报错。notifempty:空日志不轮转。create 640 root adm:轮转后创建新日志,权限640,属主root,属组adm。
测试配置是否生效:
sudo logrotate -f /etc/logrotate.d/myapp
2. 使用Ja va日志框架
很多Ja va应用用的是Log4j、Logback、SLF4J这类框架,它们本身就带了日志轮转功能,不用额外依赖系统工具。
以Log4j2为例
配置方式也很清晰,先加依赖,再写配置文件。
添加Log4j2依赖:
org.apache.logging.log4j log4j-core 2.x.x 在
log4j2.xml里配置RollingFileAppender:%d %p %c{1.} [%t] %m%n 关键配置项说明:
fileName:当前日志路径。filePattern:轮转文件命名规则,带日期和索引,自动压缩。PatternLayout:日志输出格式。Policies:轮转策略,可以按时间或按文件大小触发。DefaultRolloverStrategy:最多保留几个轮转文件。
总结一下,这两种方式覆盖了大部分场景。系统级工具适合统一管理,Ja va框架自带机制则更灵活,完全取决于你的应用架构和运维习惯。选一种就行,不用纠结。