node.js - 获取日志输出的行号和文件名

标签 node.js logging winston

是否可以获取每个日志输出的行号和文件?

例如:

  var winston = require('winston');

  winston.log('info', 'some message!'); // this is at line 4 of myfile.js

应在日志文件中指定“某些消息”来自 myFile.js 第 4 行。

最佳答案

您可以将文件名作为 label 传递,您可以从 callingModule 中获取文件名。

创建 logger.js 文件和类似的代码

var winston = require('winston');
var getLabel = function (callingModule) {
    var parts = callingModule.filename.split('/');
    return parts[parts.length - 2] + '/' + parts.pop();
};

module.exports = function (callingModule) {
    return new winston.Logger({
        transports: [
            new winston.transports.Console({
                label: getLabel(callingModule),
                json: false,
                timestamp: true,
                depth:true,
                colorize:true
            })
        ]
    });
};

现在这是你的测试文件

var logger = require('./logger')(module);
function test() {
    logger.info('test logger');
}
test();

如果你运行测试文件而不是输出看起来像

2017-07-08T07:15:20.671Z - info: [utils/test.js] test logger

关于node.js - 获取日志输出的行号和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952938/

相关文章:

logging - 如何设置已部署的 eclipse RCP 应用程序的调试选项?

node.js - 使用winston (node.js) 时在控制台中显示未捕获的异常

node.js - Nodejs - 可以在线程池大小为 4 的同时运行的最大线程是多少?

javascript - 如何在 saml2-js 中指定私钥的密码?

python - Django 未记录到文件

python - 如何将 python 日志输出存储到 mongoDb 中

node.js - TypeError : winston. Logger不是winston和morgan的构造函数

node.js - 如何在使用 s3-stream 记录器 Node 模块重新启动服务器后将内容附加到日志文件中并上传到 s3?

node.js - SOAP Node 返回错误 Target-Namespace "undefined"already in use by another Schema

node.js - socket.io 发出多次触发的事件