首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向日志中注入结构化json日志

向日志中注入结构化json日志
EN

Stack Overflow用户
提问于 2017-08-10 04:36:13
回答 1查看 1.2K关注 0票数 3

我的印象是,可能有一种方法可以直接写入systemd日志,json数据,而无需首先将其转换为sd_journal*函数所期望的格式。这有可能吗?

我的怀疑是因为对内置的json解析器的一些评论。然而,手册页却提出了不同的意见。

另外,我注意到如果您以这种格式写到stdout

代码语言:javascript
复制
<priority> message

优先级将在PRIORITY=“优先级”字段中结束,消息将在MESSAGE=" message“字段中结束。但是其他结构化的字段数据能被输入吗?

注意:手册页没有提到我提到的最后一个特性。因此,如果他们有点过时,我也不会感到惊讶,这就是我为什么要问的原因。

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 17:42:54

日志不接受任意的JSON。只是键/值对。因此不可能发送嵌套的数据结构。您可以通过Unix域套接字直接发送数据:

代码语言:javascript
复制
echo -e  "MESSAGE=Hello\nFOO=BAR\nMY_ID=12345\n" |socat  - UNIX-SENDTO:/run/systemd/journal/socket

在以下方面的成果:

代码语言:javascript
复制
{
    "__CURSOR" : "s=46dc1bd66d0e4a48a6809e45228511e2;i=84cc;b=fd9144999d6846c8827d58f56c2635db;m=850161136;t=55669a307fdd6;x=887a021a37840789",
    "__REALTIME_TIMESTAMP" : "1502386590318038",
    "__MONOTONIC_TIMESTAMP" : "35703361846",
    "_BOOT_ID" : "fd9144999d6846c8827d58f56c2635db",
    "_TRANSPORT" : "journal",
    "_UID" : "1001",
    "_GID" : "1001",
    "_CAP_EFFECTIVE" : "0",
    "_SYSTEMD_OWNER_UID" : "1001",
    "_SYSTEMD_SLICE" : "user-1001.slice",
    "_SYSTEMD_USER_SLICE" : "-.slice",
    "_MACHINE_ID" : "6e7b40640bf6473189165f19f8be2536",
    "_HOSTNAME" : "samson",
    "_SYSTEMD_UNIT" : "user@1001.service",
    "_SYSTEMD_INVOCATION_ID" : "e5ed32fbb1004545b1ddf73a0d928d87",
    "_SYSTEMD_CGROUP" : "/user.slice/user-1001.slice/user@1001.service/gnome-terminal-server.service",
    "_SYSTEMD_USER_UNIT" : "gnome-terminal-server.service",
    "_COMM" : "socat",
    "_EXE" : "/usr/bin/socat",
    "_CMDLINE" : "socat - UNIX-SENDTO:/run/systemd/journal/socket",
    "FOO" : "BAR",
    "MESSAGE" : "Hello",
    "MY_ID" : "12345",
    "_PID" : "19868",
    "_SOURCE_REALTIME_TIMESTAMP" : "1502386590317991"
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45604563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档