【问题标题】:Node JS with Socket IO Winston Logger not outputting debug带有套接字 IO Winston Logger 的节点 JS 不输出调试
【发布时间】:2015-06-09 04:33:34
【问题描述】:

我正在尝试让我正在处理的 node.js/socket.io 项目的 winston 日志记录输出 logger.debug,但我无法在控制台中显示调试。

我使用以下方法创建记录器:

var logger = new (winston.Logger)({
    transports: [
        new (winston.transports.Console)()
        ]
    });

在连接时,我试图让调试器说它已连接

io.on('connection', function (socket) {

    socket.emit('init','init-yes');

    logger.debug("Socket.on has connected");
    logger.log('debug', 'This is the debug');

    ...

但控制台中没有显示任何内容。我查看了git page,但似乎仍然不理解某些东西。

编辑 正如建议的那样,我将记录器创建更新为:

var logger = new winston.Logger({
  transports: [
    new winston.transports.Console({ level : 'debug' })
  ]
});

但我仍然没有让 logger.debug("Message here") 工作。

任何帮助将不胜感激。感谢您的宝贵时间!

【问题讨论】:

    标签: node.js debugging logging socket.io winston


    【解决方案1】:

    fine manual 声明:“请注意,传输的默认级别是 info

    由于您没有为传输设置日志级别,因此级别低于info(如debug)的任何消息都不会显示。

    解决这个问题:

    var logger = new winston.Logger({
      transports: [
        new winston.transports.Console({ level : 'debug' })
      ]
    });
    

    【讨论】:

    • @mario 也可以,但我觉得这个符号很糟糕,所以我省略了括号。
    • @mario 这听起来不像是由温斯顿引起的。
    • 你没有重定向/管道你的应用程序的输出?或者,换个说法:你是如何运行你的应用程序的?当您用console.log(...) 替换对logger.*() 的调用时,您看到什么了吗?你确定你的日志语句真的被访问了吗?
    • 如果console.log() 也没有显示,那么要么没有到达该代码路径,要么你以控制台输出未显示的方式启动应用程序。
    • 您的代码中没有碰巧有process.on('uncaughtException', ...),所以发生的任何错误都会被忽略?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2022-09-28
    • 2021-04-03
    • 2020-09-25
    相关资源
    最近更新 更多