温馨提示×

CentOS Java日志怎么配置

小樊
49
2026-07-20 16:21:20
栏目: 编程语言

在 CentOS 上配置 Java 日志,通常取决于你使用的 Java 日志框架。下面按常见场景给你一个完整说明。


一、常见 Java 日志框架

  • JUL(java.util.logging):JDK 自带
  • Log4j / Log4j2(最常用)
  • Logback(Spring Boot 默认)
  • SLF4J(日志门面,配合实现使用)

二、CentOS 上 Java 日志通用配置思路

  1. 日志配置文件放在哪里

    • 项目 resources 目录(推荐)
    • 或 CentOS 任意路径,启动时指定
  2. CentOS 日志目录建议

/var/log/java/
/var/log/myapp/
  1. 权限问题
mkdir -p /var/log/myapp
chown -R appuser:appuser /var/log/myapp

三、常见框架配置示例

1️⃣ Log4j2(推荐)

依赖

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.23.1</version>
</dependency>

log4j2.xml(放在 resources)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n"/>
        </Console>

        <RollingFile name="File"
                     fileName="/var/log/myapp/app.log"
                     filePattern="/var/log/myapp/app-%d{yyyy-MM-dd}.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

2️⃣ Logback(Spring Boot 默认)

logback-spring.xml

<configuration>
    <property name="LOG_PATH" value="/var/log/myapp"/>

    <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.gz</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

3️⃣ JUL(java.util.logging)

logging.properties

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler

java.util.logging.FileHandler.pattern=/var/log/myapp/app.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

.level=INFO

启动指定

java -Djava.util.logging.config.file=/etc/myapp/logging.properties -jar app.jar

四、Java 程序启动方式(CentOS)

1️⃣ 手动运行

java -Dlog4j.configurationFile=/etc/myapp/log4j2.xml -jar app.jar

2️⃣ systemd 服务(推荐)

[Unit]
Description=My Java App
After=network.target

[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/app/app.jar
SuccessExitStatus=143
Restart=always

[Install]
WantedBy=multi-user.target

日志仍由日志框架控制,不依赖 systemd。


五、查看 Java 日志

tail -f /var/log/myapp/app.log
journalctl -u myapp.service -f

六、常见问题

✅ 日志不输出

  • 路径无写权限
  • 配置文件未加载
  • 日志级别设置过高

✅ 日志太大

  • 使用 RollingFile
  • 按天或大小切割
  • 开启 .gz 压缩

七、我可以帮你

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

  • ✅ 是否使用 Spring Boot
  • ✅ 使用 Log4j / Logback / 其他
  • ✅ 是 CentOS 7 还是 8 / Stream
  • ✅ 是否是 生产环境

我可以直接给你一套 可复制粘贴的 CentOS + Java 日志配置方案。

0 踩