Javascript 拦截控制台日志到文件Nodejs
我正在使用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 =
控制台.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!');