【发布时间】:2022-02-12 14:33:18
【问题描述】:
通常,在 docker/k8s 中,建议直接将日志输出到标准输出。
然后我们可以使用kubectl logs 或docker logs 来查看日志。
喜欢:time=123 action=write msg=hello world,作为一个 tty,它可能是 colorized 为人类友好。
但是,如果我们想将日志导出到日志处理中心,例如 EFK (elasticsearch-fluentd-kibana),我们需要一个 json-format 日志文件。
喜欢:{"time"=123,"action"="write","msg"="hello world"}
我想要什么?
有没有可以同时兼顾human friendliness和json format的日志方法?
我正在寻找一种方法,如果我使用docker logs,那么我可以得到human-readable logs,同时log collector仍然可以得到json-format中的日志
结论
感谢下面的回答。我有两种方法:
- 不同环境中的不同日志格式:
1.1 在开发中使用文本格式:docker logs将打印彩色和人类可读的日志。
1.2 在生产中使用json-format:EFK可以很好地处理json-format。 - 日志采集器的格式转换
2.1 我们使用文本格式,但是在像
fluentd这样的日志收集器中我们可以定义一些脚本来将文本格式的kv对转换为json格式的kv对。
【问题讨论】:
-
看看这是否可以帮助stackoverflow.com/a/70335672/2270041
-
有很多。谷歌“golang 结构化日志库”。
标签: go kubernetes containers fluentd