当前位置: 首页 > news >正文

linux系统学习(14.日志管理)

目录

📌 1. Ubuntu 日志系统的两大组成

📌 2. journald 特点

📌 3. rsyslog 的角色

📌 4. journald 与 rsyslog 的关系

📌 5. 日志优先级

📌 6. 日志持久化

✅ 总结

📌 journald 的存储策略


📌 1. Ubuntu 日志系统的两大组成

在 Ubuntu 20.04 里,日志主要有两套机制:

  1. systemd-journald(核心,默认启用)

    • 属于 systemd 的一部分,负责收集所有系统日志(内核、服务、用户进程的 stdout/stderr)。

    • 日志默认存放在内存(/run/log/journal)或者 /var/log/journal/(如果开启持久化)。

    • 可以用 journalctl 命令查看。

  2. rsyslog(兼容 Syslog 的传统日志守护进程,Ubuntu 20.04 默认仍安装)

    • 会从 journald 或应用直接收集日志,写入 /var/log/*.log 文件。

    • 比如 /var/log/syslog/var/log/auth.log/var/log/kern.log 等。

    • 它主要是为了兼容老习惯:很多管理员还是习惯直接 cat /var/log/syslog

👉 简单理解:

  • journald:日志的“总入口”

  • rsyslog:把日志分门别类写入传统文件


📌 2. journald 特点

  • 统一收集:内核日志 (dmesg)、systemd 服务日志、用户应用的标准输出/错误,都会被收集。

  • 结构化存储:不仅存文本,还存 metadata(时间戳、PID、UID、服务名、SYSLOG_IDENTIFIER 等)。

  • 二进制格式:日志存储在二进制文件里,用 journalctl 来查看。

  • 支持过滤:可以按服务、时间、优先级、PID 来查。

常用命令:

# 查看所有日志 journalctl

# 查看内核日志 journalctl -k

# 查看某个服务 journalctl -u ssh

# 实时跟踪日志(类似 tail -f) journalctl -f

# 查看今天的日志 journalctl --since today

# 查看错误级别以上的日志 journalctl -p err


📌 3. rsyslog 的角色

  • 配置文件在 /etc/rsyslog.conf/etc/rsyslog.d/*.conf

  • 默认规则会把不同 facility 的日志写入不同文件:

常见日志文件:

日志文件内容
/var/log/syslog系统通用日志,几乎所有服务的消息
/var/log/auth.log认证与安全相关(sudo、ssh 登录等)
/var/log/kern.log内核日志
/var/log/dpkg.log软件安装/卸载信息
/var/log/apt/apt 包管理相关日志
/var/log/Xorg.0.logX11 图形界面日志
/var/log/boot.log系统启动信息
/var/log/faillog登录失败信息
/var/log/wtmp登录/登出历史(last 命令查看)
/var/log/btmp登录失败历史(lastb 命令查看)

📌 4. journald 与 rsyslog 的关系

  • journald 启动 → 收集所有日志。

  • rsyslog 从 journald 读日志(/run/systemd/journal/syslog),再写入传统 /var/log/xxx 文件。

  • 这样既有新式的结构化日志(journalctl),也保留了老的文件日志方式。

👉 如果你卸载 rsyslog,那么 /var/log/syslog 等文件不会再更新,但你仍然可以用 journalctl 查看日志。


📌 5. 日志优先级

systemd/journald 使用 Syslog 兼容的优先级(0-7):

数字名称说明
0emerg紧急,系统不可用
1alert必须立即修复
2crit严重错误
3err错误
4warning警告
5notice正常但值得注意
6info一般信息
7debug调试信息

示例:

journalctl -p err # 查看错误及以上日志


📌 6. 日志持久化

默认 journald 只保存在 /run/log/journal(内存里,重启丢失)。
如果你想让日志重启后还在:

sudo mkdir -p /var/log/journal

sudo systemd-tmpfiles --create --prefix /var/log/journal

sudo systemctl restart systemd-journald

这样日志会写入 /var/log/journal/,不会随重启丢失。


✅ 总结

  • journald:systemd 自带,收集全部日志,用 journalctl 查看。

  • rsyslog:把日志写入 /var/log/*.log 文件,兼容传统方式。

  • 关系:journald 是入口,rsyslog 是输出。

  • 查询方式

    • 新方式 → journalctl(强大、可过滤)

    • 旧方式 → 查看 /var/log/ 下的文件

📌 journald 的存储策略

配置文件 /etc/systemd/journald.conf 里有一行:

Storage=auto

auto 模式下,systemd-journald 会做判断:

  • 如果目录 /var/log/journal/ 存在
    → 认为你想要 持久化,日志全部写入这里。

  • 如果目录 /var/log/journal/ 不存在
    → 就退回到内存目录 /run/log/journal/,重启后日志会丢失。

http://www.dtcms.com/a/360264.html

相关文章:

  • Day 01(02): 精读HDFS概念
  • QML Chart组件之图例
  • leetcode_74 搜索二维矩阵
  • tiktok弹幕 X-Bogus
  • Self-Attention的实现
  • nginx-增加VTS模块
  • [光学原理与应用-357]:ZEMAX - 分析 - 光线迹点
  • Ubuntu 中复制粘贴快捷键
  • 中国 AI 应用出海研究:出海逻辑和注意事项
  • Dreamore AI-解读并描绘你的梦境
  • USBX移植(X是eXtended的意思)
  • 基于i.MX6ULL的RAM Disk驱动开发
  • Linux目录和命令介绍
  • 如何建立奢侈品牌的数字资产安全管控体系?
  • leetcode 371 两个整数之和
  • 智能数据建设与治理 Dataphin-数仓分层
  • 基于AI的大模型在S2B2C商城小程序中的应用与定价策略自我评估
  • “机器人管家“离我们还有多远?
  • 7.3 el-menu
  • 【C2000】C2000的硬件设计指导与几点意见
  • 官方 API 与网络爬虫的技术特性对比及选型分析
  • shell编程基础入门-2
  • Overleaf中文显示
  • 把 `QVector<QPointF>` 写入文件:三种风格、三段独立可编译的完整代码
  • APB协议​​ 构建一个完整的 ​​UVM验证VIP Agent介绍类的要素
  • 《隐性质量:决定软件生命周期的看不见的竞争力》
  • 【Linux】创建线程
  • flutter工程
  • 包的相对导入
  • Android开发简介