平常都使用console
来打印 node 脚本执行时需要看到的信息,但这些信息也就只能在控制台查看。假如你希望将打印的信息输出到日志(log)文件查看的话,那就往下看看吧。
1、前言
期望:
- 每次运行脚本时,生成log日志存储到本地
- 每次执行脚本,之前日志内容清空
需要了解的知识点:
fs new console.Console
2、什么是 fs
使用 node.js 对日志进行存储,就一定会对本地文件的增删改查,那么我们需要用到fs。
如果你写过 node,想必你应该见过它fs
,fs全称为文件系统(File System)。文件系统简单来说就是通过 Node 来操作系统中的文件。
fs 不需要 npm install,node 中自带,直接引用即可:
const fs = require('fs');
本文将会使用 fs 的fs.createWriteStream(path, options)
方法,用于创建可读流,用法如下:
/** * @param1 path * @param2 options */ let fs = require('fs'); let ws = fs.createWriteStream('./1.txt',{ flags:'w'//文件的打开模式 ,mode:0o666//文件的权限设置 ,encoding:'utf8'//写入文件的字符的编码 ,highWaterMark:3//最高水位线 ,start:0 //写入文件的起始索引位置 ,autoClose:true//是否自动关闭文档 })
以此用于在日志记录后于本地生成日志文件。
3、new console.Console(stdout[, stderr][, ignoreErrors])
在 node.js 中 console 模块提供了基础的调试功能。使用很简单,常用的API主要有 console.log()、console.error()。
此外,可以基于Console类,方便的扩展出自己的console实例,比如把调试信息打印到文件里,而部署输出在控制台上。
const fs = require('fs'); const file = fs.createWriteStream('./outPut.txt'); let logger = new console.Console(file, file); // 调用 logger.log('hello');
此时,调用logger.log
内容将会输出到 outPut.txt里,而不是打印到控制台。
4、node.js 生成日志文件方法
在了解完 node 的两个模块fs
和console
后,我们开始写这个简单而实用的方法,先创建 index.js
// index.js const fs = require('fs'); let opions = { flags: 'a', // encoding: 'utf8', // utf8编码 } let stderr = fs.createWriteStream('./a.log', options); // 创建logger let logger = new console.Console(stderr); // 真实项目中调用下面即可记录错误日志 logger.log('这是一条日志1'); logger.log('这是一条日志2'); logger.log('这是一条日志3');
打开终端执行node logger.js
:
$ node index.js
此时根目录将会生成 a.log 文件
好了,最简易版的就这样完成了。但是当时在此执行node logger.js
时,日志将会累加上去,这样会增加本地存储的负担。所以我希望的是每次执行的时候清空一下。
那就来改写一下 index.js, node.js 中改写依旧使用fs
的方法fs.writeFile
:
// 清空a.log内容 fs.writeFile('./a.log', '', function (err) { if(err){ console.log(err); } });
至此,我期望得到的日志文件就完成了。完整代码为:
const fs = require('fs'); let options = { flags: 'a', // encoding: 'utf8', // utf8编码 } let stderr = fs.createWriteStream('./a.log', options); // 创建logger let logger = new console.Console(stderr); fs.writeFile('./a.log', '', function (err) { if(err){ console.log(err); } }); // 真实项目中调用下面即可记录错误日志 logger.log('这是一条日志1'); logger.log('这是一条日志2'); logger.log('这是一条日志3');
可以将此封装起来,然后在需要的地方去调用。logger.log('你需要记录的日志')
即可。
5、其他
当然在此基础上你可以拓展其它内容,比如给日志中增加时间戳、区分日志类型储存等。
以上,如有问题或建议欢迎指正。
参考资料:
nodejs.cn/api/console…
nodejs.cn/api/fs.html
总结
以上所述是小编给大家介绍的Node.js 在本地生成日志文件的方法,希望对大家有所帮助!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]