在CentOS系统中,Java应用的日志轮转存在多种成熟方案,例如log4j、logback、java.util.logging等框架均能实现此功能。本文将以最常用的log4j为例,详细讲解如何配置稳定且高效的日志轮转机制,帮助开发者轻松管理日志文件。

第一步,首先确认项目已引入log4j依赖。若尚未添加,使用Maven构建时,在pom.xml中补充以下代码即可:
log4j
log4j
1.2.17
第二步,在项目的resources目录下创建名为log4j.properties的配置文件。若该文件已存在,可直接跳过此步骤。
第三步,编辑配置文件,将以下内容粘贴进去:
# 设置日志级别和输出格式
log4j.rootLogger=INFO, stdout, file
# 配置控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# 配置文件输出
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/myapp.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
此配置的核心要点:日志级别设置为INFO,输出格式统一为“日期 时间 级别 类名:行号 - 消息”。同时配置了两个输出目标——控制台与文件。文件输出采用RollingFileAppender,当单个日志文件大小达到10MB时自动触发轮转,最多保留最近10个轮转文件。这样既能避免磁盘空间被撑爆,又能保留足够的历史日志记录用于排查问题。
第四步,在Java代码中使用log4j记录日志,示例如下:
import org.apache.log4j.Logger;
public class MyApp {
private static final Logger logger = Logger.getLogger(MyApp.class);
public static void main(String[] args) {
logger.info("Hello, world!");
}
}
第五步,启动Java应用后,日志将按照上述配置自动输出并完成轮转。
需要特别说明:上述配置仅适用于log4j 1.x版本。若使用log4j 2.x,则需将配置文件替换为log4j2.xml,且配置内容完全不同,具体细节可参考官方文档。
