在使用“温斯顿-elasticsearch”时,我在记录消息时会收到此错误:
TypeError: callback is not a function我的代码:
const winston = require("winston");
const logger = new winston.Logger();
...
if( process.env.ELASTIC_SEARCH_LOGGING_URL ){
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: process.env.ELASTIC_SEARCH_LOGGING_URL,
log: 'info'
});
logger.add(
require('winston-elasticsearch'),
{
client
}
);
}
//this causes the error
logger.info("hi")我看到的是:
clock_1 | TypeError: callback is not a function
clock_1 | at Elasticsearch.log (/usr/app/node_modules/winston-elasticsearch/index.js:105:5)
clock_1 | at transportLog (/usr/app/node_modules/winston/lib/winston/logger.js:234:15)
clock_1 | at /usr/app/node_modules/winston/node_modules/async/lib/async.js:157:13我使用节点@8.9、温斯顿@2.4.1和温斯顿-elasticsearch@0.7.0。ELASTIC_SEARCH_LOGGING_URL env变量是精确的。
错误发生在库中:
log(info, callback) {
const level = info[LEVEL];
const { message } = info;
let meta = info[SPLAT];
if (meta !== undefined) {
// eslint-disable-next-line prefer-destructuring
meta = meta[0];
}
setImmediate(() => {
this.emit('logged', level);
});
const logData = {
message,
level,
meta,
// timestamp: this.opts.timestamp()
};
const entry = this.opts.transformer(logData);
this.bulkWriter.append(
this.getIndexName(this.opts),
this.opts.messageType,
entry
);
callback();
}它调用未定义的‘回调()’。
我是不是错配置了?是否有更好的方法通过温斯顿将应用程序日志发送到ES?
发布于 2018-10-17 02:42:32
需要温斯顿3.0或更高版本。
const winston = require("winston"); //"winston": "~3",
const logger = winston.createLogger();
if( process.env.ELASTIC_SEARCH_LOGGING_URL ){
var elasticsearch = require('elasticsearch');
var winston_elasticsearch = require('winston-elasticsearch');
var client = new elasticsearch.Client({
host: process.env.ELASTIC_SEARCH_LOGGING_URL,
log: 'info'
});
logger.add( new winston_elasticsearch({
client,
index:"logging"
}));
}温斯顿-elasticsearch开发人员的解决方案:https://github.com/vanthome/winston-elasticsearch/issues/69#issuecomment-430124467
https://stackoverflow.com/questions/52823107
复制相似问题