下面分 常见 Java 日志方案 和 CentOS 系统层面配置 两部分说明,基本能覆盖 90% 的生产场景。
| 日志框架 | 说明 |
|---|---|
| Logback | 最常用,Spring Boot 默认 |
| Log4j2 | 性能最好,推荐新项目 |
| Log4j 1.x | 已停止维护,不建议 |
| java.util.logging | JDK 自带,一般不单独用 |
✅ 推荐组合
logback-spring.xml(推荐放在 resources)<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志路径(CentOS 上常用) -->
<property name="LOG_PATH" value="/var/log/myapp"/>
<!-- 控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
sudo mkdir -p /var/log/myapp
sudo chown -R appuser:appuser /var/log/myapp
⚠️ 不要直接用 root 跑 Java 程序
sudo vi /etc/systemd/system/myapp.service
[Unit]
Description=Java App
After=network.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar \
--logging.config=/opt/myapp/logback-spring.xml
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
journalctl -u myapp -f
✅ 优点
sudo vi /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
create 0644 appuser appuser
}
测试:
logrotate -f /etc/logrotate.d/myapp
log4j2.xml<Configuration status="INFO">
<Appenders>
<RollingFile name="File" fileName="/var/log/myapp/app.log"
filePattern="/var/log/myapp/app-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
启动参数:
java -Dlog4j.configurationFile=/opt/myapp/log4j2.xml -jar app.jar
ls -ld /var/log/myapp
ps -ef | grep java
sudo chown -R appuser:appuser /var/log/myapp
export LANG=en_US.UTF-8
✅ 日志目录:/var/log/应用名
✅ 日志框架:Logback / Log4j2
✅ 日志轮转:logrotate
✅ 进程管理:systemd
✅ 不记录大量 DEBUG 日志
如果你愿意,可以告诉我:
我可以给你 定制一份完整配置方案。