日志文件插件在UTF-8 JSON输入上失败

日志文件插件在UTF-8 JSON输入上失败,json,encoding,utf-8,logstash,Json,Encoding,Utf 8,Logstash,我们将JSON日志文件导入Elasticsearch数据库,至少在一些机器上,我们发现导入失败,并抱怨编码问题(“不兼容的编码:Windows-1252和UTF-8”)。输入配置很简单: file { path => "D:/Octopus/Applications/prod-ndoa/Bridge.Web/logs/BridgeSoap.*.txt" sincedb_path => "D:/Octopus/Applications/prod-ndoa/Bridg

我们将JSON日志文件导入Elasticsearch数据库,至少在一些机器上,我们发现导入失败,并抱怨编码问题(“不兼容的编码:Windows-1252和UTF-8”)。输入配置很简单:

  file {
    path => "D:/Octopus/Applications/prod-ndoa/Bridge.Web/logs/BridgeSoap.*.txt"
    sincedb_path => "D:/Octopus/Applications/prod-ndoa/Bridge.Web/logs/sincedb"
    codec => json
   }
但只要输入文件的开头包含字节原点标记(BOM),处理就会失败

如果我删除编解码器json,那么导入工作正常,但使用“普通”格式(即我们的json文档作为字符串导入)


奇怪的是,它在一些机器上已经运行了相当长的一段时间。这是对新机器安装的测试,发现了这个错误。

据Logstash的人说,这是JSON编解码器使用的Ruby解析器的一个已知问题:

不幸的是,在Windows机器上,UTF-8文档通常与BOM一起保存在文件的开头,因此如果JSON代码更灵活并接受这些字符,那就太好了