在 CentOS 上配置 Java 日志,通常取决于你使用的 Java 应用类型 和 日志框架。下面按常见场景给你一套从基础到实战的配置说明。
java -version
如果未安装:
sudo yum install java-1.8.0-openjdk-devel -y
| 框架 | 说明 |
|---|---|
| JUL(java.util.logging) | JDK 自带 |
| Log4j / Log4j2 | 最常用 |
| Logback | Spring Boot 默认 |
| SLF4J | 日志门面 |
下面分别说明配置方式。
log4j2.xml<?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 interval="1"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
src/main/resources/log4j2.xmljava -Dlog4j2.configurationFile=/etc/myapp/log4j2.xml -jar app.jar
logback.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</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="FILE"/>
</root>
</configuration>
logging.propertieshandlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=INFO
java.util.logging.FileHandler.pattern=/var/log/myapp/app.log
java.util.logging.FileHandler.limit=10485760
java.util.logging.FileHandler.count=10
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java -Djava.util.logging.config.file=/etc/myapp/logging.properties -jar app.jar
sudo mkdir -p /var/log/myapp
sudo chown appuser:appuser /var/log/myapp
maxHistory 或 max[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
journalctl -u myapp -f
-Dfile.encoding=UTF-8
| 场景 | 推荐 |
|---|---|
| Spring Boot | Logback |
| 传统 Java 项目 | Log4j2 |
| 简单程序 | JUL |
| 生产环境 | Log4j2 + systemd |
如果你愿意,可以告诉我:
我可以给你一份完全可直接用的配置模板。