我正在使用NodeJs进行游戏,并意识到访问旧的console.log
输出会非常有帮助。机制和计算变得相当复杂,稍后访问它们以查找并对其进行一些数据分析以找到我的修改器(战斗机制)的正确值是很好的。同时,我想在控制台中看到console.log
。拦截控制台登录到文件Nodejs
我知道这是不可能的,常规的JavaScript(见This),但我希望NPM了包装件的一些办法拦截日志和他们登录到服务器上的文件。有什么想法吗?
我正在使用NodeJs进行游戏,并意识到访问旧的console.log
输出会非常有帮助。机制和计算变得相当复杂,稍后访问它们以查找并对其进行一些数据分析以找到我的修改器(战斗机制)的正确值是很好的。同时,我想在控制台中看到console.log
。拦截控制台登录到文件Nodejs
我知道这是不可能的,常规的JavaScript(见This),但我希望NPM了包装件的一些办法拦截日志和他们登录到服务器上的文件。有什么想法吗?
的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
日志。
您可以拦截的console.log像这样
var cl = console.log
console.log = function(...args){
// your custom logging logic here
cl.apply(console, args)
}
或http://stackoverflow.com/a/38552911/6121703 –
那么最终目标是登录到标准输出*和*写入文件?而不是试图捕捉你的'console.log'只是让你自己的日志方法写入文件和标准输出。或者,如果您在* nix环境中启动应用程序,则只需使用'tee'。 – dvlsg
您也可以使用像永远一样的程序来运行您的程序,它会自动将console.log和console.err输出重定向到文件。 – jfriend00