# Linux 使用 Journalctl 查看和操作日志
提示
创建 systemd 服务可以查看这篇文章
# 保存日志到文件
提示
journald
服务存储的日志默认重启系统后删除
编辑配置文件
vi /etc/systemd/journald.conf
把 Storage=auto
改为 Storage=persistent
并取消注释,然后重启日志服务
systemctl restart systemd-journald
此时 journald
所有的日志都会保存到 /var/log/journal
中
# 查看和操作
# 清理日志
有两种选项
- –vacuum-size
- –vacuum-time
–vacuum-size
指定日志的总体体积,这样会不断的删除旧的日志以保持该条件
journalctl --vacuum-size=1G
–vacuum-time
任何早于这一时间点的条目都将被删除。例如仅保留两天的日志:
journalctl --vacuum-time=2d
# 查看日志
- 按 Unit 查看日志
journalctl -u nginx.service
提示
服务后面的 .service
可以省略
使用 -f
参数可以动态显示
journalctl -f -u nginx
- 按行查看
例如查看 nginx
最新的 100 条日志
journalctl -u nginx -n 100
# 输出日志
使用 journalctl
把日志重定向到文件
默认情况下,journalctl
会在 pager 内显示输出结果。如果希望对数据进行处理,则需要使用标准输出。在这种情况下需要使用 --no-pager
选项
sudo journalctl -u nginx --no-pager > nginx.log
- 格式化输出
添加 -o
参数能够以多种格式进行显示
例如查看 nginx 服务最新 100 行的日志输出 json
格式并重定向到 nginxlog.json
中
journalctl -u nginx -n 100 --no-pager -o json > nginxlog.json
-o
参数选项支持的类型如下:
short
默认格式,即经典的 syslog 输出格式short-iso
强调 ISO 8601 时间戳short-precise
提供微秒级精度short-monotonic
强调普通时间戳verbose
显示全部字段,包括通常被内部隐藏的字段export
适合传输或备份的二进制格式json
标准 json 格式,每行一条记录json-pretty
适合阅读的 json 格式json-sse
经过包装可以兼容 server-sent 事件的 json 格式。cat
只显示信息字段本身。
文章部分内容参考链接: