1.自动换行查看完整日志

通过 --no-pager 选项可以看到自动换行的日志:

[[email protected]]# journalctl -xu docker --no-pager
... ...
Jun 14 15:14:47 localhost dockerd[7333]: time="2019-06-14T15:14:47.817433009+08:00" level=info msg="Docker daemon" commit=481bc77 graphdriver(s)=overlay2 version=18.09.6
Jun 14 15:14:47 localhost dockerd[7333]: time="2019-06-14T15:14:47.818693748+08:00" level=info msg="Daemon has completed initialization"
Jun 14 15:14:47 localhost dockerd[7333]: time="2019-06-14T15:14:47.923160567+08:00" level=info msg="API listen on /var/run/docker.sock"
Jun 14 15:14:47 localhost systemd[1]: Started Docker Application Container Engine.
-- Subject: Unit docker.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.service has finished starting up.
-- 
-- The start-up result is done.

2. 查看某个时间段的日志

[[email protected]]#  journalctl -xu --since 11:30 --until 11:40 kubelet --no-pager
... ...
Jul 03 11:36:53 host-57-86 kubelet[11191]: I0703 11:36:53.893873   11191 kubelet_node_status.go:283] Setting node annotation to enable volume controller attach/detach
Jul 03 11:36:53 host-57-86 kubelet[11191]: I0703 11:36:53.900914   11191 kubelet_node_status.go:72] Attempting to register node host-57-86
Jul 03 11:36:53 host-57-86 kubelet[11191]: E0703 11:36:53.902687   11191 kubelet_node_status.go:94] Unable to register node "host-57-86" with API server: nodes "host-57-86" is forbidden: node "host-86" is not allowed to modify node "host-57-86"
... ...

3. 查看指定 service 的日志

[[email protected]]#  journalctl -u <service>

4. 持续查看日志文件

[[email protected]]# journalctl -f -u <service>

5. 日志级别过滤

除了通过 PRIORITY= 的方式,还可以通过 -p 选项来过滤日志的级别。 可以指定的优先级如下:

# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug

[[email protected]]# journalctl -p err

6. 格式化输出的结果

如果需要对日志记录进行处理,你需要的格式来简化日志分析工作。幸运的是,journalctl 能够以多种格式进行显示,只须添加 -o 选项即可。-o 选项支持的类型如下:

short:这是默认的格式,即经典的 syslog 输出格式。
short-iso:与 short 类似,强调 ISO 8601 时间戳
verbose:显示全部字段,包括通常被内部隐藏的字段
export:适合传输或备份的二进制格式。
json:标准 JSON 格式,每行一条
json-pretty:格式化的 JSON 格式
cat:只显示信息字段本身。

假设这里我想以 Json 的格式输出 prometheus 的最后 10 条日志:

[[email protected]]# journalctl -u prometheus -n 10 -o json

7. 查看 journal 日志占用空间

[[email protected]]# journalctl --disk-usage -m