温馨提示×

Java日志CentOS如何配置

小樊
40
2026-08-30 07:20:03
栏目: 编程语言

下面分 常见 Java 日志方案 和 CentOS 系统层面配置 两部分说明,基本能覆盖 90% 的生产场景。


一、Java 日志常见方案选择

日志框架 说明
Logback 最常用,Spring Boot 默认
Log4j2 性能最好,推荐新项目
Log4j 1.x 已停止维护,不建议
java.util.logging JDK 自带,一般不单独用

✅ 推荐组合

  • Spring Boot → Logback
  • 高性能系统 → Log4j2

二、CentOS 上 Java 日志配置(以 Logback 为例)

1️⃣ 项目中的日志配置文件

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>

2️⃣ CentOS 创建日志目录并授权

sudo mkdir -p /var/log/myapp
sudo chown -R appuser:appuser /var/log/myapp

⚠️ 不要直接用 root 跑 Java 程序


三、CentOS 系统层面日志配置

✅ 方式一:使用 systemd(推荐)

1️⃣ 创建服务文件

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

2️⃣ 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

3️⃣ 查看日志

journalctl -u myapp -f

✅ 优点

  • 自动管理进程
  • 日志可统一查看
  • 生产环境标准做法

✅ 方式二:使用 logrotate 防止日志爆炸

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 的 CentOS 配置(如你用的是 Log4j2)

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 日志


如果你愿意,可以告诉我:

  • Spring Boot 还是普通 Java 项目?
  • 一个服务还是多个?
  • 是否要对接 ELK / 日志平台?

我可以给你 定制一份完整配置方案。

0 踩