首页 > 服务器学习 > Linux > systemd中日志管理
2018
05-28

systemd中日志管理

Systemd使用journalctl命令统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

journalctl命令的配置文件是/etc/systemd/journald.conf。

journalctl功能强大,用法非常多,常用的选项有:

journalctl:查看所有日志(默认情况下,只保存本次启动的日志,notice或warning以粗体显示,红色显示error级别以上的信息)

--vacuum-time:指定日志文件保存多久:journalctl --vacuum-time=1years

--disk-usage:显示日志占据的硬盘空间

--vacuum-size:指定日志文件占据的最大空间journalctl --vacuum-size=1G

--no-pager:日志默认分页输出,--no-pager 改为正常的标准输出

-k:查看内核日志(不显示应用日志)

-n:显示尾部指定数字行数的日志,后面不写数字默认为10,如journalctl -n 20

-f:实时滚动显示最新日志,它很像tailf命令,默认显示十行,随着匹配日志的增长而持续输出

--since:查看指定时间的日志:

journalctl --since="2012-10-30 18:17:16"

journalctl --since "20 min ago"

journalctl --since yesterday

journalctl --since today

journalctl --since "2015-01-10" --until "2015-01-11 03:00"

journalctl --since 09:00 --until "1 hour ago"

-p:查看指定优先级(及其以上级别)的日志,journalctl -p err或者journalctl -p 3,共有8级

0: emerg

1: alert

2: crit

3: err

4: warning

5: notice

6: info

7: debug

-u:查看某个Unit的日志,journalctl -u nginx.service,可以合并显示多个 Unit 的日志:journalctl -u nginx.service -u php-fpm.service,或者不使用选项直接journalctl /usr/lib/systemd/nginx.service来查看

-b:显示指定启动点启动后的所有日志,如上次启动时的(例如,刚刚系统崩溃了):

journalctl -b -0 显示本次启动的日志(默认为本次,-0可以省略)

journalctl -b -1 显示上次启动的日志

journalctl -b -2 显示上上次启动的日志

-o:指定命令的输出格式,journalctl -o short|short-iso|short-percise|short-monotonic|verbose|export|json|json-pretty|json-sse|cat

cat: 只显示信息字段本身。

export: 适合传输或备份的二进制格式。

json: 标准JSON,单行输出。

json-pretty: JSON格式,多行输出,适合人类阅读习惯。

json-sse: JSON格式,经过打包以兼容server-sent事件。

short: 默认syslog类输出格式。

short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。

short-monotonic: 默认格式,提供普通时间戳。

short-precise: 默认格式,提供微秒级精度。

verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

按照筛选条件显示特定进程的日志:

_COMM 显示特定程序的所有消息,例如:journalctl /usr/lib/systemd/systemd

_EXE 进程的可执行文件的路径

_PID 进程的PID,例如:journalctl _PID=1

_UID 运行该进程用户的UID

_SYSTEMD_UNIT 启动该进程的 systemd 单元

以上筛选条件可组合使用,例如:journalctl _SYSTEMD_UNIT=sshd.service _PID=1182

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。