如何在Linux上配置日志管理

来源:编程学习作者:小白龙头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上配置日志管理》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置日志管理》有用,将其分享出去将是对创作者最好的鼓励。

Linux系统的日志管理是运维工作中的重要环节,通过合理的配置可以实现日志的分类存储、自动轮转、过期清理等功能,既方便后续排查系统故障,也能避免日志文件无限制增长占用磁盘资源。常用的日志管理组件包括rsyslog、systemd journal和logrotate,三者可以配合使用覆盖大部分日志管理场景。

rsyslog服务配置

rsyslog是Linux系统中最常用的日志收集服务,默认在大多数主流Linux发行版中预装并运行,负责接收系统内核、各类服务的日志并存储到指定文件中。

基础配置文件结构

rsyslog的主配置文件通常位于/etc/rsyslog.conf,额外的配置可以放在/etc/rsyslog.d/目录下,以.conf结尾的文件会被自动加载。配置规则的基本格式为:

日志设施.日志级别 日志存储路径

常见的日志设施包括auth(认证相关)、cron(定时任务)、kern(内核)、mail(邮件)、user(用户进程)等,日志级别从低到高分为debug、info、notice、warning、err、crit、alert、emerg,级别越高表示日志越严重。

自定义日志存储规则示例

如果需要将SSH服务的日志单独存储到/var/log/ssh.log,可以创建/etc/rsyslog.d/ssh.conf文件,添加如下配置:

# 将authpriv设施的所有级别日志存储到ssh.log
authpriv.*    /var/log/ssh.log

配置完成后重启rsyslog服务使配置生效:

# 重启rsyslog服务
systemctl restart rsyslog
# 查看服务运行状态
systemctl status rsyslog

systemd journal日志管理

systemd journal是systemd自带的日志管理组件,负责收集内核、systemd服务、用户进程的日志,默认存储在/var/log/journal/目录下,以二进制格式存储,需要通过journalctl命令查看。

常用journalctl操作命令

  • 查看所有日志:journalctl
  • 查看最近100条日志:journalctl -n 100
  • 查看指定服务的日志,比如查看sshd服务日志:journalctl -u sshd
  • 查看指定时间段的日志:journalctl --since "2024-01-01 00:00:00" --until "2024-01-02 00:00:00"
  • 实时跟踪日志输出:journalctl -f

持久化journal日志配置

默认情况下,journal日志可能仅存储在内存中,重启后会丢失,若需要持久化存储,需要修改/etc/systemd/journald.conf配置文件:

# 将Storage值改为persistent,持久化存储日志
Storage=persistent
# 单个日志文件最大大小,默认是1G
SystemMaxFileSize=1G
# 日志总占用最大磁盘空间,默认是10%磁盘空间或者4G
SystemMaxUse=4G

修改完成后重启systemd-journald服务:

systemctl restart systemd-journald

logrotate日志轮转配置

logrotate是Linux系统自带的日志轮转工具,可以自动对日志文件进行切割、压缩、删除过期文件,避免单个日志文件过大。

基础配置参数说明

logrotate的主配置文件为/etc/logrotate.conf,自定义轮转规则可以放在/etc/logrotate.d/目录下。常用配置参数如下:

参数说明
daily每天轮转一次日志
weekly每周轮转一次日志
monthly每月轮转一次日志
rotate 数量保留多少个轮转后的日志文件,比如rotate 7表示保留7个备份
compress轮转后的日志文件进行gzip压缩
delaycompress延迟压缩,和compress配合使用,本次轮转的文件不压缩,下次轮转时再压缩
missingok如果日志文件不存在,不报错继续执行
notifempty如果日志文件为空,不进行轮转
create 权限 用户 用户组轮转后创建新的日志文件,指定权限、所属用户和用户组

自定义日志轮转规则示例

为之前配置的SSH日志/var/log/ssh.log添加轮转规则,创建/etc/logrotate.d/ssh文件,内容如下:

/var/log/ssh.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root root
    postrotate
        # 轮转后重启rsyslog服务,让服务写入新的日志文件
        systemctl restart rsyslog > /dev/null 2>&1 || true
    endscript
}

配置完成后可以手动测试轮转规则是否生效:

# 测试ssh日志的轮转配置,不会实际执行轮转
logrotate -d /etc/logrotate.d/ssh
# 强制执行轮转
logrotate -f /etc/logrotate.d/ssh

配置验证与注意事项

完成所有配置后,可以通过以下方式验证配置是否生效:

  • 查看rsyslog配置:重启rsyslog服务后,触发对应日志产生,检查目标日志文件是否有内容写入
  • 查看journal配置:重启systemd-journald后,执行journalctl --list-boots查看是否有历史启动日志记录,确认持久化生效
  • 查看logrotate配置:手动执行轮转命令后,检查日志文件是否被切割、压缩,旧文件是否按规则保留

需要注意,修改任何服务配置文件前建议先备份原文件,避免配置错误导致服务异常。同时日志文件的权限设置要合理,避免普通用户随意查看敏感日志内容。

Linuxrsysloglogrotatesystemd_journal修改时间:2026-06-26 23:48:37

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。