我正在尝试将虚拟 nodejs 应用程序集成到 ELK 堆栈中。我使用 winston 作为日志库,因为它是我在 JS 堆栈上开发时的首选。我尝试使用winston 3.x 版本编写这段代码
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 并且它工作正常,除了我失去了后来版本中引入的一些好的功能这一事实。我没有找到任何关于 3.x 版本的 logstash 支持的文档。我错过了什么还是我必须写一些自定义的东西?