目录
journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。
命令格式为:
journalctl [OPTIONS…] [MATCHES…]
journalctl 命令的路径为:
/bin/journalctl
Help
可以通过 man page 和 -h 选项来获得最直接的帮助文档:
$ manjournalctl
$ journalctl-h
输出所有的日志记录
不带任何选项时,journalctl 输出所有的日志记录:
$ sudo journalctl
这基本上没什么用处,因为你立即就被洪水般的日志记录给淹没了。所以,接下来我们学习如何高效的过滤出有价值的日志信息。
匹配(match)
我们可以通过 "FIELD=VALUE" 的格式来匹配具体的日志记录, 如:
_SYSTEMD_UNIT=cron.service
日志信息的定义也类似一个实体类型,具体的信息被保存在各个对应的字段中,比如 MESSAGE、MESSAGE_ID、_PID、_UID、_HOSTNAME、_SYSTEMD_UNIT 等等(通过 man 7 systemd.journal-fields 可以查看所有可用的 match 字段)。因此可以通过这些字段的内容匹配相关的日志记录:
上图中的输出是 cron.service 服务相关的日志记录。
可以同时添加多个字段进行匹配,它们之间是与的关系,就是同时符合多个条件的记录才会被匹配,比如添加 PRIORITY 字段的匹配条件:
$ journalctl _SYSTEMD_UNIT=cron.service PRIORITY=6
注意各个字段的取值,比如为 PRIORITY 设置 debug、info 是不工作的,必须设置为对应的数字。可以通过 -F 选项来查看某个字段的可选值:
$ journal -F PRIORITY
具体的对应方式如下:
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
对同一个字段应用多个 match 条件的情况,比如:
$ journalctl _SYSTEMD_UNIT=cron.service _SYSTEMD_UNIT=prometheus.service
此时 cron.service 和 prometheus.s