拦截控制台日志到文件Nodejs

时间:2016-08-19 23:27:56

标签: javascript html node.js npm console.log

我正在使用NodeJ进行游戏,并意识到访问旧的console.log输出会非常有帮助。机制和计算变得相当复杂,以后访问它们以搜索并对它们进行一些数据分析以找到我的修改器(战斗机制)的正确值会很好。同时,我也希望在控制台中看到console.log

我知道这不可能使用普通的javascript(参见This),但我希望npm有一些方法来拦截日志并将它们记录到服务器上的文件中。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

同时登录stdout和文件的NPM选项可以是Winston。 Winston是一个日志库,允许您定义自己的记录器,指定他们的传输(传输是您如何处理这些日志行)。在您的情况下,您可以定义具有两个传输的记录器,stdout和日志文件。示例(受Winston documentation启发):

const winston = require('winston');

let logger = new (winston.Logger)({
    transports: [
        new (winston.transports.Console)(),
        new (winston.transports.File)({ filename: 'somefile.log' })
    ]
});

logger.info('hello, world!');

如果您运行上面的代码,您将在控制台和somefile.log中看到日志。

答案 1 :(得分:2)

你可以像这样拦截console.log

var cl = console.log

console.log = function(...args){
  // your custom logging logic here
  cl.apply(console, args)
}