系统日志管理

日志管理概述

银河麒麟服务器采?Systemd Journal 和传统的 Rsyslog 双重日志管理模式。Journal 捕获系统启动和服务的二进制日志,?Rsyslog 负责存储文本格式的系统日志

1. 使用 journalctl 查询日志

journalctl 是查看Systemd 日志的核心工具,功能异常强大

查看本次启动后的所有日
journalctl -b
按时间过滤日
journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 12:00:00"
journalctl --since yesterday
实时滚动查看系统最新日
journalctl -f
只查看某个服务的日志(如 SSH
journalctl -u sshd -n 50
按日志级别过滤(错误及以上)
journalctl -p err..emerg

2. 传统日志文件位置

日志文件 说明
/var/log/messages 系统通用日志,记录大部分操作
/var/log/secure 用户登录、权限验证(SSH等)
/var/log/cron 定时任务栏/计划任务栏日志
/var/log/boot.log 系统启动过程详细记录

3. 日志清理与空间限

长期运行的服务器如果不限制日志大小,会导?/var 分区爆满

1

查看当前日志占用

journalctl --disk-usage
2

设置空间限制(推荐)

编辑 /etc/systemd/journald.conf

SystemMaxUse=1G
SystemMaxFileSize=200M

重启服务生效。code>sudo systemctl restart systemd-journald

3

手动清理日志

# 按保留时间清?
sudo journalctl --vacuum-time=7d
# 按占用空间清?
sudo journalctl --vacuum-size=500M

4. 使用 Logrotate 轮转日志

对于第三方应用产生的日志,推荐使用Logrotate 进行自动切割和压缩

# 示例配置: /etc/logrotate.d/myapp
/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 user group
}

常见问题解答

Q: /var/log/messages 没记录了怎么办?

A: 请检?rsyslog 服务是否运行。code>systemctl status rsyslog。如果不正常,重启后再试

Q: 如何将日志发送到远程日志服务器?

A: 编辑 /etc/rsyslog.conf,在文件末尾添加 *.* @远程服务器IP:514(UDP 协议)或 *.* @@远程服务器IP:514(TCP 协议)?