Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拦截控制台日志到文件Nodejs_Javascript_Html_Node.js_Npm_Console.log - Fatal编程技术网

Javascript 拦截控制台日志到文件Nodejs

Javascript 拦截控制台日志到文件Nodejs,javascript,html,node.js,npm,console.log,Javascript,Html,Node.js,Npm,Console.log,我正在使用NodeJs开发一个游戏,并意识到访问旧的控制台.log输出将非常有用。力学和计算变得相当复杂,如果以后能够访问它们并对它们进行搜索和数据分析,以找到我的修改器(战斗力学)的正确值,那就太好了。同时,我还想在控制台中看到console.log 我知道这在常规javascript中是不可能的,(请参阅),但我希望npm有一个拦截日志并将其记录到服务器上文件的包。有什么想法吗?你可以像这样截取console.log var cl = console.log console.log =

我正在使用NodeJs开发一个游戏,并意识到访问旧的
控制台.log
输出将非常有用。力学和计算变得相当复杂,如果以后能够访问它们并对它们进行搜索和数据分析,以找到我的修改器(战斗力学)的正确值,那就太好了。同时,我还想在控制台中看到
console.log



我知道这在常规javascript中是不可能的,(请参阅),但我希望npm有一个拦截日志并将其记录到服务器上文件的包。有什么想法吗?

你可以像这样截取console.log

var cl = console.log

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

可以选择同时登录到标准输出和文件的NPM选项。Winston是一个日志库,允许您定义自己的记录器,指定它们的传输(传输是指如何处理这些日志行)。在您的例子中,您可以定义一个带有两个传输的记录器,标准输出和一个日志文件。示例(受以下内容启发):


如果运行上面的代码,您将在控制台和
somefile.log

中看到日志,那么最终目标是登录到stdout并写入文件?不要试图捕获你的
console.log
,只需创建自己的日志方法,将其写入文件和标准输出即可。或者,如果您在*nix环境中启动应用程序,只需使用
tee
。您也可以使用像forever这样的程序来运行您的程序,它会自动将console.log和console.err输出重定向到文件。winston能从console.log()捕获日志吗?
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!');