一 核心概念与级别对照
二 系统日志 rsyslog 与 journald 的设置
systemctl restart rsyslog 生效。<设施>.<级别或操作符>;动作可以是本地文件、用户、远程主机等。示例:
*.info;mail.none;authpriv.none;cron.none /var/log/messagesmail.=warn /var/log/mail_warn.logmail.*;mail.!info /var/log/mail_all_but_info.loglocal3.* ~*.* @192.0.2.10 或 *.* @@192.0.2.10:10514mail.* -/var/log/maillogimudp/imtcp 与 UDPServerRun 514 / InputTCPServerRun 514;远程侧按上述转发语法发送。$ActionQueueFileName fwdRule1
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
*.* @@192.0.2.10:514
journalctl(如 journalctl -u rsyslog -f 实时跟踪)。rsyslog 仍负责按规则写入文件、转发与落盘策略。三 Java 应用日志级别设置
logging.level.root=INFO、logging.level.com.example=DEBUGlogging:
level:
root: INFO
com.example: DEBUG
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/myapp.log</file>
<encoder>
<pattern>%d{ISO8601} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n%ex"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
四 日志轮转与保留策略
/var/log/myapp.log {
weekly
rotate 4
create 0644 root utmp
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog >/dev/null 2>&1 || true
endscript
}
weekly 每周轮转;rotate 4 保留 4 份;compress 压缩旧日志;postrotate 发送 HUP 让 rsyslog 重新打开日志文件。对高频日志(如 mail)使用“-”异步写入可减少 I/O,但需权衡断电数据丢失风险。五 快速排错与最佳实践
logger 发送测试日志并观察目标文件或远程服务器是否收到:logger -p local3.info "test rsyslog rule";远程可用 tcpdump udp port 514 或 ss -lunpt | grep 514 检查端口连通性。mail.* 与 mail.none 同时用于同一目标会造成冲突;使用 mail.*;mail.!info 排除某级别更清晰。