这是预期的行为。Docker 以 16K 的大小记录日志消息,因为日志消息有 16K 缓冲区。如果消息长度超过 16K,则应由 json 文件记录器拆分并在端点合并。
它确实将日志标记为部分消息,但实际上取决于重新组装的驱动程序/服务。
Docker Docs提到有不同的支持驱动程序。
对于您的架构(Stacktraces),这json-driver
可能不是最佳选择。
而且我在 github 上找到了这个线程,它添加了关于主题的附加信息(以及很多 offtop)。
编辑。
日志架构说,容器化应用程序写入的所有内容,stdout
由stderr
容器引擎处理和重定向到某个地方。
Docker 容器引擎将这两个流重定向到日志记录驱动程序,该驱动程序在 Kubernetes 中配置为以 json 格式写入文件。
注意:Docker json 日志记录驱动程序将每一行视为单独的消息。另一个特点是使用 Docker 日志记录驱动程序时,不直接支持多行消息。您需要在日志代理级别或更高级别处理多行消息。
我真的不明白我能用它做什么?
这是对 Docker 大小的限制。这是另一个很好的讨论,最终得出了使用 filebeat/fluentd 的想法。
看起来 Fluentbit 的Docker_mode选项可能会有所帮助,但我不确定您如何准确地解析容器日志。
我应该削减我的堆栈跟踪吗?
这取决于您是否需要在日志中进行跟踪。
还是自定义尺寸?我已经在 Docker 端搜索了某种“旋钮”来调整,但目前找不到。
看起来唯一的解决方案是使用一些可以组合分割线的日志处理工具。