【问题标题】:winston http transport example温斯顿 http 传输示例
【发布时间】:2014-12-10 11:51:16
【问题描述】:

我需要一个使用 http 传输在服务器上发布日志的工作示例。我可以使用 file 传输和 console 传输在文件和控制台上记录消息。我也尝试为 http 传输做同样的事情,winston 客户端的源代码看起来像这样:

var winston = require('winston');

var logger = new (winston.Logger)({
transports: [
  new (winston.transports.Console)(),
  new (winston.transports.Http)({ host: 'localhost', port:8080 })
]
  });

logger.log('info', 'Hello world');

运行此代码时,我收到如下错误:

D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\lib\winston\transports\http.js:52
req = (self.ssl ? https : http).request({
     ^
ReferenceError: self is not defined
at Http._request (D:\Balwant\Devlopment-    Env\LoggingDemo\node_modules\winston\lib\winston\transports\http.js:52:10)
at Http.log (D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\lib\winston\transports\http.js:109:8)
at emit (D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\lib\winston\logger.js:175:17)
at D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\node_modules\async\lib\async.js:111:13
at Array.forEach (native)
at _each (D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\node_modules\async\lib\async.js:32:24)
at Object.async.each (D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\node_modules\async\lib\async.js:110:9)
at Logger.log (D:\Balwant\Devlopment-Env\LoggingDemo\node_modules\winston\lib\winston\logger.js:203:9)
at Object.<anonymous> (D:\Balwant\Devlopment-Env\LoggingDemo\logger.js:10:8)
at Module._compile (module.js:456:26)

由于我是 node.js 的新手,我不知道如何处理它。我尝试在谷歌上搜索解决方案,但没有得到任何解决方案。 请帮助我。

谢谢

【问题讨论】:

    标签: node.js winston


    【解决方案1】:

    首先winstonwinstond 是不同的包。您可以查看this blog post 了解差异。

    您可能还需要为 winston 构建自己的 HTTP 传输(如果您真的想使用 winston)。因此它可以与您的特定端点协议一起使用。

    您可以按照指定的here 创建自定义的winston 传输。然后,您可以使用 request 之类的东西将日志数据发送到您的 HTTP 端点。

    祝你好运。

    网络传输

    我不相信 winston.transports.Http 存在,但我认为您正在寻找这个:

    new winston.transports.Webhook({ 'host': 'localhost', 'port': 8080, 'path': '/collectdata' })
    

    this example所示。

    温斯顿

    我的错误,it does have winston.transports.Http 但你需要 winstond

    您可以检查this example 以使用 winstond 作为 http 守护程序。然后将您的 Http 日志发送给它。

    所以这个:

    new winston.transports.Http({ host: 'localhost', port: 8080})
    

    应该指向一个 winstond 守护进程,例如:

    var winstond = require('winstond');
    
    var http = winstond.http.createServer({
      services: ['collect', 'query', 'stream'],
      port: 8080
    });
    
    http.add(winstond.transports.Console, {});
    http.listen();
    

    【讨论】:

    • 感谢您的回复。我不能使用类似于文件传输的东西,比如 new (winston.transports.Http) ({ host: 'localhost', port: 8080}) :
    • 我不相信有 Http 传输。请参阅我的更新答案。
    • 好吧,我还不清楚日志将如何发送到服务器并显示回客户端。我看过上面的例子,但不知道如何使用它:(
    • 签出winstons日志查询。 here.
    • 我尝试了你说的方式,我创建了在端口 8080 上运行的 winstond 守护程序,以及其他将 http 日志发送到服务器的应用程序。代码是: var winston = require('winston'); var logger = new (winston.Logger)({ transports: [ new winston.transports.Http({ host: 'localhost', port: 8080}) ] }); logger.log('info', '你好,这是一个原始的日志事件', { 'foo': 'bar' });但我收到错误,例如:req = (self.ssl ? https : http).request({ ^ ReferenceError: self is not defined...(and more). 请让我知道我是错还是对.
    【解决方案2】:
        var winston = require('winston');
    
        var logger = new (winston.Logger)({
          transports: [
            new (winston.transports.Console)({ json: false, timestamp: true }),
            new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
          ],
          exceptionHandlers: [
            new (winston.transports.Console)({ json: false, timestamp: true }),
            new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
          ],
          exitOnError: false
        });
    
        module.exports = logger;
    
    add this line were ever u wanted to lg the error message
    var logger = require('../../config/logger.js');
    logger.info("the default logger with my tricked out transports is rockin this module");
    

    【讨论】:

    • 感谢您的回答 - 您能解释一下您所做的更改吗?
    • 这个答案没有提供关于通过 http 发送日志的原始问题的任何信息
    • 这不提供任何有关 winston HTTP 传输的信息
    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2019-10-28
    • 2016-08-29
    • 2018-07-27
    • 2018-06-16
    • 2016-12-13
    • 2018-11-19
    • 2013-10-23
    相关资源
    最近更新 更多