区分journalctl中的级别

区分journalctl中的级别

我可以以某种方式让journalctl 在实际消息旁边打印日志级别吗?

我已经找到了该-p选项,但这不是我想要的,我想看到错误和警告,但我希望能够区分它们。

我发现的唯一的东西是来自man journalctl

当输出到 tty 时,行根据优先级着色:级别 ERROR 及更高级别的行着色为红色; NOTICE 及更高级别的行突出显示;其他行均正常显示。

这是一个很好的开始,但我仍然想区分所有 8 个级别,而不是将它们汇总为三个级别。

答案1

一种选择是使用输出格式选项。例如,journalctl -o verbose将向您显示连接到特定条目的所有数据。例子:

星期三 2017-02-08 21:06:27.524361 EET [s=f689734c6c674cfd98a49e66c3349fdd;i=42c;b=01111969442644239da701153bd49c37;m=23e9195;t=548098 fc53333;x=c943c53e7411726]
    优先级=6
    SYSLOG_FACILITY=3
    CODE_FILE=src/core/job.c
    代码行=804
    CODE_FUNCTION=job_log_status_message
    SYSLOG_IDENTIFIER=systemd
    MESSAGE_ID=39f53479d3a045ac8e11786248231fbf
    USER_UNIT=timers.target
    MESSAGE=已达到目标计时器。
    结果=完成
    _TRANSPORT=期刊
    _PID=874
    _UID=1000
    _GID=1000
    _COMM=系统
    _EXE=/usr/lib/systemd/systemd
    _CMDLINE=/usr/lib/systemd/systemd --user
    _CAP_EFFECTIVE=0
    _SYSTEMD_CGROUP=/user.slice/user-1000.slice/[电子邮件受保护]/init.scope
    _SYSTEMD_OWNER_UID=1000
    [电子邮件受保护]
    _SYSTEMD_USER_UNIT=init.scope
    _SYSTEMD_SLICE=user-1000.slice
    _SYSTEMD_USER_SLICE=-.slice
    _SYSTEMD_INVOCATION_ID=2f397502a38947d5b18eca7eb5f5b1ba
    _SOURCE_REALTIME_TIMESTAMP=1486580787524361
    _BOOT_ID=01111969442644239da701153bd49c37
    _MACHINE_ID=4de8a7d0aad84611b2e1dfb0ff8f43e7
    _HOSTNAME=德古拉

这里的字段PRIORITY实际上指向消息级别(在本例中是INFO级别)。级别映射方式如下:

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

我不认为你可以避免其他元数据,而只留下消息级别(如果我错了,请纠正我)而不进行某种后处理(自定义 shell 脚本等)。

相关内容