web-dev-qa-db-ja.com

journalctlのレベルを区別する

どういうわけか、実際のメッセージの隣にjournalctl印刷ログレベルを作成できますか?

-pオプションを見つけましたが、それは私が探しているものではありません。エラーと警告の両方を確認したいが、それらを区別できるようにしたいのです。

私が見つけた唯一のものはman journalctlからのこれです:

Ttyに出力する場合、行は優先順位に従って色分けされます。レベルERROR以上の行は赤に色付けされます。レベルNOTICE以上の行が強調表示されます。他の行は通常どおり表示されます。

これはいいスタートですが、3つのレベルに集約するのではなく、8つのレベルすべてを区別したいと思います。

4
Ordoshsen

1つのオプションは、出力フォーマットオプションを使用することです。例えば ​​journalctl -o verboseは、特定のエントリに接続されているすべてのデータを表示します。例:

水曜日2017-02-08 21:06:27.524361 EET [s = f689734c6c674cfd98a49e66c3349fdd; i = 42c; b = 01111969442644239da701153bd49c37; m = 23e9195; t = 548098fc53333; x = c943c53e741176] .. 
 SYSLOG_FACILITY = 3 
 CODE_FILE = src/core/job.c 
 CODE_LINE = 804 
 CODE_FUNCTION = job_log_status_message 
 SYSLOG_IDENTIFIER = systemd 
 MESSAGE_ID = 39f53479d3a045ac8e11786248231fbf 
 USER_UNIT = timers.target 
 MESSAGE = Reached target Timers。
 RESULT = done 
 _TRANSPORT = journal 
 _PID = 874 .____。] _UID = 1000 
 _GID = 1000 
 _COMM = systemd 
 _EXE =/usr/lib/systemd/systemd 
 _CMDLINE =/usr/lib/systemd/systemd --user 
 _CAP_EFFECTIVE = 0 
 _SYSTEMD_CGROUP=/user.slice/user-1000.slice/[email protected]/init.scope 
 _SYSTEMD_OWNER_UID = 1000 
 [email protected] 
 _SYSTEMD_USER_UNIT = init.scope 
 _SYSTEMD_SLICE = user-1000.slice [ .____] _SYSTEMD_USER_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

他のメタデータを回避して、なんらかの後処理(カスタムシェルスクリプトなど)を行わずに、メッセージレベル(間違っている場合は修正してください)だけを残すことはできないと思います。

3
ddnomad