2016-08-19 29 views
0

我正在使用NodeJs进行游戏,并意识到访问旧的console.log输出会非常有帮助。机制和计算变得相当复杂,稍后访问它们以查找并对其进行一些数据分析以找到我的修改器(战斗机制)的正确值是很好的。同时,我想在控制台中看到console.log拦截控制台登录到文件Nodejs


我知道这是不可能的,常规的JavaScript(见This),但我希望NPM了包装件的一些办法拦截日志和他们登录到服务器上的文件。有什么想法吗?

+0

那么最终目标是登录到标准输出*和*写入文件?而不是试图捕捉你的'console.log'只是让你自己的日志方法写入文件和标准输出。或者,如果您在* nix环境中启动应用程序,则只需使用'tee'。 – dvlsg

+0

您也可以使用像永远一样的程序来运行您的程序,它会自动将console.log和console.err输出重定向到文件。 – jfriend00

回答

2

的NPM选项登录到标准输出和文件在同一时间可能是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

您可以拦截的console.log像这样

var cl = console.log 

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

或http://stackoverflow.com/a/38552911/6121703 –