【问题标题】:How can I fix error: ConfigurationError: Missing node(s) option for winston-elasticsearch?如何修复错误:ConfigurationError:winston-elasticsearch 的缺少节点选项?
【发布时间】:2020-02-10 18:05:56
【问题描述】:

我想在 Cucumber 中使用带有 ElectricSearch 的日志 我创建了一个类 Logger

var winston = require('winston');
var Elasticsearch = require('winston-elasticsearch');
  var instance
  var logger
  var esTransportOpts = {
  level: 'info' 
   }

class Logger { 

    constructor() {
        logger = winston.createLogger({
           transports: [
               new Elasticsearch(esTransportOpts)
          ]
       })
    }

     static getLogger() { 
     if (!instance)  { 
        instance = new Logger()
      }
     return logger
   }


   createLogger () { 
        let logger = winston.createLogger({
           level: 'info',
           format: winston.format.json(),
            defaultMeta: { service: 'user-service' },
            transports: [

                   new winston.transports.File({ filename: 'combined.log' })
            ]
        });

         //
         // If we're not in production then log to the `console` with the format:
         // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
         // 
         if (process.env.NODE_ENV !== 'production') {
           logger.add(new winston.transports.Console({
            format: winston.format.simple()
        }));
    }

   }


    static addLogging () { 
        winston.add(winston.transports.Logstash, {
          port: 28777,
          node_name: 'my node name',
          host: '127.0.0.1'
        });

    }
}
module.exports = Logger

在 Cucumber 的 Before 语句中,我创建了一个记录器

const { Before, Given, When, Then } = require('cucumber')
const Logger = require('../../src/Logger')

        let a,b, r , logger


         Before(function() {
             logger = Logger.getLogger()
          })

         Given('I have first variable {int}', function (int) {
           logger.info("Multipler")
           a = int

         });



         Given('I have second variable {int}', function (int) {
           b = int

         });

         When('Multiplication a and b', function() {
           r = a*b
         })



         Then('I display the Result  {int}', function (int) {
             int = r
             logger.info(a, "multiplyes with", b, "is", r )
             return int
         });

当我执行这个黄瓜测试时,我收到错误消息:

cucumber2@0.1.0 黄瓜 /Users/steinkorsveien/Development/Cucumber/cucumber2 cucumber-js "systemtest/Multiplier.feature" F----

失败:

1) 场景:a 和 b 相乘 # systemtest/Multiplier.feature:24
✖ #systemtest/step-definition/multiplier.js:7之前 ConfigurationError:缺少节点选项 在新客户端 (/Users/steinkorsveien/Development/Cucumber/cucumber2/node_modules/@elastic>/elasticsearch/index.js:52:13) 在新的 Elasticsearch (/Users/steinkorsveien/Development/Cucumber/cucumber2/node_modules/winston->elasticsearch/index.js:57:21) 在新的 Logger >(/Users/steinkorsveien/Development/Cucumber/cucumber2/src/Logger.js:13:16) 在 Function.getLogger >(/Users/steinkorsveien/Development/Cucumber/cucumber2/src/Logger.js:20:20) 在世界。 >(/Users/steinkorsveien/Development/Cucumber/cucumber2/systemtest/step->definition/multiplier.js:8:30)

【问题讨论】:

    标签: elasticsearch cucumber winston


    【解决方案1】:

    如上所述here

    您缺少弹性搜索客户端配置。

    var esTransportOpts = {
       level: 'info',
       clientOpts: { node: 'http://localhost:9200' }
    }
    

    这样你就可以告诉温斯顿在哪里转储日志。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 2021-11-13
      • 1970-01-01
      • 2020-11-18
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      相关资源
      最近更新 更多