Node.js Winston 3.x对logstash的支持缺失?
我正在尝试将一个虚拟nodejs应用程序集成到一个ELK堆栈中。我使用winston作为日志库,因为它是我在JS堆栈上开发时的首选。我试着用winston 3.x版本编写这段sinppet代码Node.js Winston 3.x对logstash的支持缺失?,node.js,logging,logstash,winston,elk,Node.js,Logging,Logstash,Winston,Elk,我正在尝试将一个虚拟nodejs应用程序集成到一个ELK堆栈中。我使用winston作为日志库,因为它是我在JS堆栈上开发时的首选。我试着用winston 3.x版本编写这段sinppet代码 var winston = require('winston'); require('winston-logstash'); var logger = winston.createLogger({ level: 'info', transports: [ new wi
var winston = require('winston');
require('winston-logstash');
var logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.Console(),
new winston.transports.Logstash({
port: 5000,
node_name: 'my node name',
host: '127.0.0.1'
})
]
});
logger.info('ciao mondo')
结果是
> node index.js
logstash is a legacy winston transport. Consider upgrading:
- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md
所以我已经阅读了官方的说明,说明logstash支持现在是一种格式
var winston = require('winston');
require('winston-logstash');
var logger = winston.createLogger({
level: 'info',
format : winston.format.logstash(),
transports: [
new winston.transports.Console()/*,
new winston.transports.Logstash({
port: 5000,
node_name: 'my node name',
host: '127.0.0.1'
})*/
]
});
logger.info('ciao mondo')
现在输出是
> node index.js
{"@message":"ciao mondo","@fields":{"level":"info"}}
这没问题,但因为我没有告诉如何连接logstash套接字,所以集中式日志系统没有收到此事件
我已经尝试过将winston降级到2.4.1版本,但效果很好,原谅我丢失了laters版本中引入的一些好功能。我还没有找到任何关于3.x版本上logstash支持的文档。我是遗漏了什么,还是我必须写一些定制的东西?在《温斯顿3》中,有两个概念在起作用 格式只是对正在记录的对象进行一些转换 传输是一种“管道”,它定义了将日志对象发送到某处的方式 在温斯顿2号世界里,这两个概念经常结合在一起;例如,
winstonlogstash
模块是一个传输,但也以logstash可以接受的方式隐式格式化对象。Winston2或Winston3中没有任何东西限制传输或格式方面的可能性,因此Winston3并没有“缺少对Logstash的支持”
然而,Winston3确实对TransportAPI做了一些更改(如前所述,还分离了格式,尽管TransportAPI仍然可以进行格式设置)。这就是为什么您会看到关于winston logstash
是传统传输的警告:winston logstash
的作者没有更新他们的模块以使用新的winston 3样式的接口。有一个关于Winston项目的报告,其中提供了一些关于更新传输的有用信息
因此,你可以给作者安装bug来升级他们的传输,自己升级/包装它(参见链接线程),或者-我认为legacy
警告只是一个警告,所以它在Winston 3上仍然可以正常工作
事实上,我认为已经有了一个让
winstonlogstash
3.x兼容的开放平台,尽管回购协议的维护者似乎已经装模作样了;我想你可以试试公共关系分支/分支。您也可以尝试实现相同的目标,但似乎是为3.x设计的。请随意评论最有效的方法。在《温斯顿3》中,有两个概念在起作用
格式只是对正在记录的对象进行一些转换
传输是一种“管道”,它定义了将日志对象发送到某处的方式
在温斯顿2号世界里,这两个概念经常结合在一起;例如,winstonlogstash
模块是一个传输,但也以logstash可以接受的方式隐式格式化对象。Winston2或Winston3中没有任何东西限制传输或格式方面的可能性,因此Winston3并没有“缺少对Logstash的支持”
然而,Winston3确实对TransportAPI做了一些更改(如前所述,还分离了格式,尽管TransportAPI仍然可以进行格式设置)。这就是为什么您会看到关于winston logstash
是传统传输的警告:winston logstash
的作者没有更新他们的模块以使用新的winston 3样式的接口。有一个关于Winston项目的报告,其中提供了一些关于更新传输的有用信息
因此,你可以给作者安装bug来升级他们的传输,自己升级/包装它(参见链接线程),或者-我认为legacy
警告只是一个警告,所以它在Winston 3上仍然可以正常工作
事实上,我认为已经有了一个让winstonlogstash
3.x兼容的开放平台,尽管回购协议的维护者似乎已经装模作样了;我想你可以试试公共关系分支/分支。您也可以尝试实现相同的目标,但似乎是为3.x设计的。请随意评论最有效的方法。您可以按照本指南了解如何将winston与winston elasticsearch插件一起使用。这将生成logstash格式的日志,因此Kibana可以使用这些日志
winston elasticsearch
info
特征
Winston 3.x
、Elasticsearch6.0及更高版本
,请使用0.7.0
。对于Elasticsearch6.0及更高版本
,请使用0.6.0
。对于Elasticsearch5.0
及更高版本,请使用0.5.9
。对于早期版本,请使用0.4.x系列
您可以按照本指南了解如何将winston与winston elasticsearch
插件一起使用。这将生成logstash格式的日志,因此Kibana可以使用这些日志
winston elasticsearch
info
特征
Winston 3.x
、Elasticsearch6.0及更高版本
,请使用0.7.0
。对于Elasticsearch6.0及更高版本
,请使用0.6.0
。对于Elasticsearch5.0
及更高版本,请使用0.5.9
。对于早期版本,请使用