Java在CentOS上的日志配置指南
一 前置准备与目录权限
java -version。如无则安装,例如:sudo yum install java-11-openjdk-devel。sudo mkdir -p /var/log/myappsudo chown -R javauser:javauser /var/log/myappsudo chmod -R 755 /var/log/myapp二 选择日志框架与放置配置文件
| 框架 | 配置文件 | 放置位置 | 说明 |
|---|---|---|---|
| Log4j 1.x | log4j.properties / log4j.xml | classpath | 经典、配置直观 |
| Logback | logback.xml / logback-test.xml | classpath | 与 SLF4J 配合常用 |
| SLF4J | 无独立配置 | — | 日志门面,需绑定 Logback 或 Log4j 等实现 |
| java.util.logging | logging.properties | 任意路径,启动参数指定 | JDK 内置,需通过系统属性加载 |
三 常用配置示例
log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/myapp/myapp.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/myapp/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/myapp-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE"/>
</root>
</configuration>
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler
.level=INFO
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=/var/log/myapp.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.limit=1000000
java.util.logging.FileHandler.count=10
启动时指定配置:java -Djava.util.logging.config.file=/path/to/logging.properties -jar myapp.jar。四 日志轮转与系统日志集成
sudo vim /etc/logrotate.d/myapp/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 javauser javauser
}
logrotate -d /etc/logrotate.d/myappsudo systemctl reload logrotate(或等待定时任务执行)。五 运行与维护要点
log4j.rootLogger=INFO, … 改为 DEBUG 并重启;<root level="info"> 改为 debug 并重启;java.util.logging.ConsoleHandler.level=INFO 改为 FINE 并重启。