centos日志记录级别设置指南
导读:一 核心概念与级别对照 日志由“设施 Facility”和“级别 Severity”共同决定。设施代表日志来源类别,常见有:authpriv、cron、daemon、kern、mail、syslog、user、local0–local7;...
一 核心概念与级别对照
- 日志由“设施 Facility”和“级别 Severity”共同决定。设施代表日志来源类别,常见有:authpriv、cron、daemon、kern、mail、syslog、user、local0–local7;级别从低到高共 8 级:debug(7)、info(6)、notice(5)、warning(4)、err(3)、crit(2)、alert(1)、emerg(0)。设置“级别”时,含义是“记录该级别及其以上更严重级别”的日志。例如:mail.=warn 仅记录 mail 的 warning;mail.err 记录 err 及以上;mail.*; mail.!info 记录 mail 的全部级别但排除 info。
二 系统日志 rsyslog 与 journald 的设置
- 配置文件与模块
- 主配置:/etc/rsyslog.conf,包含模块加载、全局指令与规则;常见模块有 imuxsock、imjournal、imklog,以及可选的 imudp/imtcp 用于接收远程日志(UDP/TCP 514 端口)。CentOS 7 起默认通过 imjournal 从 systemd journal 读取本地日志。修改后执行:
systemctl restart rsyslog生效。
- 主配置:/etc/rsyslog.conf,包含模块加载、全局指令与规则;常见模块有 imuxsock、imjournal、imklog,以及可选的 imudp/imtcp 用于接收远程日志(UDP/TCP 514 端口)。CentOS 7 起默认通过 imjournal 从 systemd journal 读取本地日志。修改后执行:
- 常用选择器与动作
- 选择器语法:
< 设施> .< 级别或操作符>;动作可以是本地文件、用户、远程主机等。示例:- 记录除 mail、authpriv、cron 外所有 info 及以上 到 /var/log/messages:
*.info; mail.none; authpriv.none; cron.none /var/log/messages - 仅记录 mail 的 warning:
mail.=warn /var/log/mail_warn.log - 记录 mail 全部但排除 info:
mail.*; mail.!info /var/log/mail_all_but_info.log - 忽略 local3 全部日志:
local3.* ~ - 转发到远程(UDP/TCP):
*.* @192.0.2.10或*.* @@192.0.2.10:10514 - 文件前的短横线“-”表示异步写入(减少 I/O,断电可能丢未落盘数据):
mail.* -/var/log/maillog
- 记录除 mail、authpriv、cron 外所有 info 及以上 到 /var/log/messages:
- 选择器语法:
- 远程接收与队列
- 启用接收:取消注释
imudp/imtcp与UDPServerRun 514 / InputTCPServerRun 514;远程侧按上述转发语法发送。 - 可靠转发建议开启磁盘队列(示例):
$ActionQueueFileName fwdRule1 $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1 *.* @@192.0.2.10:514
- 启用接收:取消注释
- 与 systemd journal 的关系
- 现代 CentOS 使用 journald 采集内核与系统日志,rsyslog 通过 imjournal 消费;如需查看与分析,可用
journalctl(如journalctl -u rsyslog -f实时跟踪)。rsyslog 仍负责按规则写入文件、转发与落盘策略。
- 现代 CentOS 使用 journald 采集内核与系统日志,rsyslog 通过 imjournal 消费;如需查看与分析,可用
三 Java 应用日志级别设置
- 配置优先级建议:配置文件 > 启动参数/环境变量 > 代码动态设置。
- 常见框架与示例
- Spring Boot(application.properties/yml)
- properties:
logging.level.root=INFO、logging.level.com.example=DEBUG - yml:
logging: level: root: INFO com.example: DEBUG
- properties:
- Logback(logback.xml)
< 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> - Log4j2(log4j2.xml)
< 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>
- Spring Boot(application.properties/yml)
- 运行时动态调整
- 多数框架支持 JMX、HTTP 管理接口或 API 动态修改日志级别;也可在代码中按框架 API 调整(如设定 Logger 的 Level)。生产建议以配置文件为主,动态调整为辅。
四 日志轮转与保留策略
- 使用 logrotate 管理日志文件大小与保留份数,避免单文件过大。示例(/etc/logrotate.d/myapp):
/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排除某级别更清晰。 - 远程转发建议启用磁盘队列与重试,提升可靠性;必要时使用 TCP 保证顺序与可靠性。
- 谨慎使用文件前的“-”异步写入,确保业务可容忍潜在的少量数据丢失。
- 将
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos日志记录级别设置指南
本文地址: https://pptw.com/jishu/765503.html
