journal 是 systemd 的日志系统,全称是 systemd-journald。它负责收集、存储和管理 Linux 系统中所有服务和内核的日志。

简单来说:所有 systemd 管理的服务输出的信息(stdout/stderr)都会被 journal 统一管理。

journal 的特点

集中管理日志

不同服务的日志统一存储,不用自己去找 /var/log/*.log 文件。

结构化日志

除了普通文本,还保存了时间戳、服务名、PID、用户、优先级等信息,方便查询和过滤。

实时查看

可以通过 journalctl -u 服务名 -f 实时跟踪服务输出(类似 tail -f)。

持久化/临时

默认日志存储在内存中(重启丢失),可以配置 /etc/systemd/journald.conf 让日志写入磁盘。

systemd service 与 journal

在 .service 文件里:

StandardOutput=journal
StandardError=journal

表示服务的 stdout 和 stderr 输出都会发送到 journal。

这样不用单独创建日志文件,也能统一管理。

常用命令

# 查看某个服务日志
journalctl -u fastapi

# 实时跟踪日志
journalctl -u fastapi -f

# 查看最近 100 条日志
journalctl -u fastapi -n 100

# 查看某个时间段日志
journalctl -u fastapi –since “2025-11-26 12:00” –until “2025-11-26 14:00”

-u 指定 unit(服务名),-f 实时跟踪,–since/–until 时间过滤

总结

journal = systemd 日志管理系统

优点:集中、结构化、可过滤、实时

配合 .service 文件中的 StandardOutput=journal,可以轻松管理服务日志

日志优化

默认情况下 systemd-journald 会保存在 /run/log/journal(内存)或 /var/log/journal(持久化)里。

systemd 提供了 日志大小控制和轮转机制。

日志存储位置

临时存储(默认)
/run/log/journal → 重启后丢失

持久化存储
/var/log/journal → 重启后仍保存

需要目录存在:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles –create –prefix /var/log/journal
sudo systemctl restart systemd-journald

systemd-journald 的二进制日志文件,不是普通文本文件,所以直接 cat 或 less 是不可读的。

为什么是二进制文件?

systemd 采用 二进制格式 存储日志,保存了结构化信息:

  • 时间戳
  • 日志来源(unit、PID、UID 等)
  • 日志级别
  • 标准输出 / 错误

优点:

  • 查询和过滤更快
  • 占用空间比纯文本日志更小
  • 可以存储更多元信息

缺点:

  • 不能直接用 cat 或 less 查看
  • 必须用 journalctl 工具读取

控制日志大小

编辑 /etc/systemd/journald.conf,常用选项:

配置 含义 建议
SystemMaxUse= 日志最大磁盘空间 500M1G
SystemKeepFree= 系统盘保留空间 100M
SystemMaxFileSize= 单个 journal 文件最大大小 50M
SystemMaxFiles= 最大 journal 文件数量 10
MaxRetentionSec= 日志最大保留时间 1month

修改后执行:

sudo systemctl restart systemd-journald

查看和清理日志

实时查看

journalctl -u fastapi -f

按大小清理

# 清理旧日志,使总大小 ≤ 500M
sudo journalctl –vacuum-size=500M

按时间清理

# 删除超过 30 天的日志
sudo journalctl –vacuum-time=30d

小结

写入 journal 会占用磁盘空间,但可以通过 journald.conf 控制大小和轮转

对生产环境,建议:

设置合理的 SystemMaxUse 和 SystemMaxFileSize

配合 journalctl –vacuum-* 定期清理

高负载或大日志量服务,也可以额外输出到文件并轮转(logrotate)

作者 admin

百度广告效果展示