Winston Logger在VSCode控制台无输出的解决办法

发布于 2018-09-06 作者 shen100 180次 浏览 版块 分享

使用VSCode来开发Node.js程序, 用到了winston这个库,用来输出日志,代码如下

var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)(),
      new winstonRedis.Redis({
            ....
        }).on('error', function(err) {
            console.error('logger redis connection error', err);
        })
    ]
  });

发现VSCode的控制台中并无输出, 后来在node_modules/winston/lib/winston/transports/console.js中找到如下代码

if (this.stderrLevels[level]) {
    process.stderr.write(output + this.eol);
} else {
    process.stdout.write(output + this.eol);
}

原来winston直接将输出写到stdout。在VSCode的配置launch.json中添加"outputCapture": "std", 然后就可以看到输出了

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "type": "node",
            "request": "launch",
            "name": "启动程序",
            "program": "${workspaceFolder}/bin/www",
            "outputCapture": "std"
        }
    ]
}
收藏
暂无回复