Nodejs中的Console把输出重定向到日志文件中

console这个东西, 在浏览器里相信程序猿和程序媛都用过不少

在Nodejs也到处可见其身影

Nodejs中的console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。

常见的使用套路:Nodejs中的Console把输出重定向到日志文件中

常见用法

在开发过程,甚至生产环境中, 相信也不可避免的或多或少会用上它来做一下调试和显示

这时候有一种需求是希望这些输出能记录下来, 以方便的时候用来追溯程序运行时的一些参数和情况

那么其中一种简单做法就是把输出内容用管道”送”到日志文件里(以Linux里为例)

node demo-con.js > demo.log
Nodejs中的Console把输出重定向到日志文件中

然后保存好demo.log日志文件即可

下面来讲这期重点: 把console的输出如何重定向到我们指定的文件中, 最终弄成统一的日志调用方法

const fs = require("fs");
const { Console } = require('console');
const output = fs.createWriteStream('d:/stdout.log');							//定义输出位置和日志文件名
const errorOutput = fs.createWriteStream('d:/stderr.log');			//定义输出位置和错误日志文件名
const logger = new Console({ stdout: output, stderr: errorOutput });

1.引用fs, 用于文件流控制日志文件

2.创建具有一个或两个可写流实例的新 Console。 stdout 是一个可写流,用于打印日志或信息输出。 stderr 用于警告或错误输出。 如果未提供 stderr,则 stdout 用于 stderr

3.然后原来的console替换成logger, 像这样:

logger.log('可以这样');

再运行, 然后来看看日志文件的内容Nodejs中的Console把输出重定向到日志文件中

成功输出到文件中

这个时候出现一个问题, 如果要在正式代码里使用, 那么每个Nodejs文件都可引用这5句话也太麻烦了, 我们来稍微”封装”一下, 以方便调用

新建一个logger.js

const fs = require("fs");
const { Console } = require('console');
const output = fs.createWriteStream('d:/stdout.log');
const errorOutput = fs.createWriteStream('d:/stderr.log');
const logger = new Console({ stdout: output, stderr: errorOutput });
logger.log(`start log on ${new Date()} `);		//记录一下开始时间节点

module.exports = logger;		//输出logger对象

改一下刚才用来测试的代码, 把前5行代替成一行(方便对比,先注释掉)

// const fs = require("fs");
// const { Console } = require('console');
// const output = fs.createWriteStream('d:/stdout.log');				//定义输出位置和日志文件名
// const errorOutput = fs.createWriteStream('d:/stderr.log');			//定义输出位置和错误日志文件名
// const logger = new Console({ stdout: output, stderr: errorOutput });
const logger = require("./logger");

为了方便确认修改成功, 改一个输出内容看看

logger.log('现在是Logger方式了');

Nodejs中的Console把输出重定向到日志文件中

运行通过

完整的代码

const logger = require("./logger");

logger.log('现在是Logger方式了');
logger.log('还可以', '这样');

let n = 'SL';
logger.log('%s, 你好', n);

let jo = {name: 'Zhang', age: 16};
logger.log("json对象:", jo);

logger.error(new Error('出错啦!'));

复杂的问题简单化

每次只关注一个知识点

对技术有兴趣的小伙伴可以关注我, 以后会经常分享各种奇奇怪怪又实用的技术知识

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.net/procedure/25972.html

发表评论

登录后才能评论