json - 使用流利的 JSON 解析器的多种时间格式
问题描述
我目前正在阅读容器日志作为我在 fluentd 中的源,并且我正在解析我们所有的 JSON 格式的日志文件。JSON 解析器根据我们的配置按预期工作,但问题在于时间格式。根据日志文件,有多种时间格式。
例如,一个日志文件可能将时间存储为 2020-05-28T21:00:07Z,但另一个日志文件将其存储为 2020-04-28T20:07:52.013557931Z。在所有情况下,时间都存储在一个名为“time”的键中,因此默认情况下 fluentd 会尝试解析该键。
是否可以使用相同的过滤器来解析所有 JSON 数据但让它处理多种时间格式?我们是否需要为每种不同的时间格式创建不同的过滤器?
解决方案
这更像是一个“流利”的问题,而不是一个直接的“Ruby”问题。
但是,对于您关于过滤器的具体问题,一般来说,仅根据值无法判断具体的日期格式。例如,“2020-03-04”是指 3 月 4 日 (yyyy-MM-dd) 还是 4 月 3 日 (yyyy-dd-MM)?不幸的是,没有办法仅从价值观来判断。
最好的做法通常是验证每个来源的格式(通过阅读该来源的文档或其他方式),并确保可以使用识别信息将日期值与来源联系起来。否则,fluentd 和任何其他程序都无法确定现在是什么时间(尽管您可以在某些情况下使用技巧来确定不是什么时间。)
推荐阅读
- python - 修改该函数之外的参数而不使用“返回”python的函数
- go - 在浏览器关闭时关闭 Go 服务器
- java - CSV 到 JSON java
- android - GradleBuilder.js 替换 build.gradle
- java - 将Maven项目的多个依赖添加到Java中的非Maven项目中
- r - R:套索参数的交叉验证并与 cv.glmnet 进行比较
- python - 如何使用python将csv中的数值替换为分类值
- excel - 创建全局文件路径
- networking - 无法在 UDP 162 上接收 snmp 陷阱
- python - 如何使用 pyral 在封闭项目中获取 Rally Stories