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

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.xdnf.cn/news/19394.html

相关文章:

  • 华秋DFM检查PCB设计缺陷、一键导出Gerber、BOM、坐标文件
  • 第八章 光照
  • Qt QNetworkAccessManager 简述及例程
  • C++11——万能模板及完美转发
  • GMTapSDK 扩展使用文档
  • 【开题答辩全过程】以 基于springboot的垃圾分类管理系统为例,包含答辩的问题和答案
  • LSTM原理理解
  • 8.29学习总结
  • 大语言模型(LLM)简介与应用分享
  • Linux-数据库
  • 旅游景点库系统的设计与实现(代码+数据库+LW)
  • 力扣hot100:轮转数组(常规思路与三步反转讲解)(189)
  • mmaction安装的详细说明帖
  • 王立群《读史记-刘邦》读书笔记
  • 嵌入式C学习笔记之编码规范
  • 数学分析原理答案——第七章 习题12
  • AI大模型实战解析-RAG知识库+LangChain项目实战
  • Linux系统的进程管理
  • Unity3D Gizmos 调试可视化
  • Qt中UDP回显服务器和客户端
  • 第二十七天-ADC模数转换实验
  • python反转字符串
  • 三维重建模型、3DGS、nerf、 mip-nerf
  • 《WINDOWS 环境下32位汇编语言程序设计》第9章 通用控件(2)
  • 点接触混合润滑完整数值解
  • 免税商品优选购物商城系统|java技术开发
  • MATLAB R2010b系统环境(三)MATLAB操作界面
  • JavaWeb01
  • 【Linux】创建线程
  • 基于K8s部署Redis高可用