在 CentOS 上配置 Java 日志,通常取决于你使用的 Java 日志框架。下面按常见场景给你一个完整说明。
日志配置文件放在哪里
resources 目录(推荐)CentOS 日志目录建议
/var/log/java/
/var/log/myapp/
mkdir -p /var/log/myapp
chown -R appuser:appuser /var/log/myapp
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.1</version>
</dependency>
<?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>
<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>
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 -Dlog4j.configurationFile=/etc/myapp/log4j2.xml -jar app.jar
[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。
tail -f /var/log/myapp/app.log
journalctl -u myapp.service -f
✅ 日志不输出
✅ 日志太大
.gz 压缩如果你愿意,可以告诉我:
我可以直接给你一套 可复制粘贴的 CentOS + Java 日志配置方案。