Journalctl 的手动的说:
应用程序可以自由定义新字段,但有几个字段具有特殊含义。
但是,我没有找到真正引入 journalctl 可以识别并允许过滤的自己的字段的方法。
我尝试了以下多种方法但均无济于事:
echo 'FOO=12' | systemd-cat -t TestFields -p warning
journalctl 没有看到我尝试添加的 FOO 字段:
# journalctl -f -t TestFields
-- Logs begin at Wed 2018-11-28 16:08:31 UTC. --
Nov 28 16:29:10 2f79ab2701c9 TestFields[105]: FOO=12
JSON 格式:
# journalctl -f -t TestFields -o json-pretty
{
"__CURSOR" : "s=95d756f74cc14c25b5d6a6c86e2d3dd4;i=31b;b=c2286470c74849db84c4a2b458276561;m=4686eb5305;t=57bbc10de8aab;x=8ea14ded83dc4684",
"__REALTIME_TIMESTAMP" : "1543422550641323",
"__MONOTONIC_TIMESTAMP" : "302911279877",
"_BOOT_ID" : "c2286470c74849db84c4a2b458276561",
"_UID" : "0",
"_GID" : "0",
"_MACHINE_ID" : "70406ad7f5774a17a5f1cbbaf5f4455e",
"_HOSTNAME" : "2f79ab2701c9",
"PRIORITY" : "4",
"_CAP_EFFECTIVE" : "3fffffffff",
"_SYSTEMD_CGROUP" : "0",
"_TRANSPORT" : "stdout",
"_COMM" : "cat",
"_EXE" : "/usr/bin/cat",
"_CMDLINE" : "/bin/cat",
"_STREAM_ID" : "7bf67dfa7ff846429fea8092f40a34f7",
"SYSLOG_IDENTIFIER" : "TestFields",
"MESSAGE" : "FOO=12",
"_PID" : "105"
}
最后过滤没有结果:
# journalctl FOO=12 -t TestFields
-- No entries --
比较一下:
# journalctl _PID=105 -t TestFields
-- Logs begin at Wed 2018-11-28 16:08:31 UTC, end at Wed 2018-11-28 16:29:10 UTC. --
Nov 28 16:29:10 2f79ab2701c9 TestFields[105]: FOO=12
答案1
如果有人正在探索这条路径,答案是否定的,你不能这样做。考虑使用结构化日志,你可以在其中添加任何你想要的字段。