使用node scribe上报日志,查询结果的时候发现中文字符变成了乱码,经询问服务端,日志在上传时就已经是乱码了,说明是端上的问题,所以排查node scribe的问题。

借用网上一张scribe架构图

clipboard.png

据图可以看出scribe是基于Thrift通信的,node-scribe中也是依赖了thrift包。数据编码的问题一般就是在通讯层。

要解决中文编码问题,需要对node-scribe的thrift使用进行调整。具体两点:

  • 将目前node scribe包的thrift版本从0.7.0 升级到0.9.3

  • 指定thrift的数据传输按帧的形式发送

     thrift.createConnection(this.host, this.port, {transport: thrift.TFramedTransport});
    

由于这里需要改动node scribe包,怎么办呢?

github上fork一份,自己改代码,然后在package.json中将scribe包指定为自己git的项目地址

如果改动后还是不能解决中文编码问题,可以继续搜索「thrift中文编码」,而不是搜索scribe


你可
92 声望1 粉丝

like a fighter