使用 fs.WriteStream 编写超简单的日志流
栏目: JavaScript · 发布时间: 6年前
内容简介:虽然大概是个不能再简单的思路了。先创建一个写入流这样便创建了一个文件写入口,需要时直接调用
虽然 console.log
很好用,但是生产环境需要保存日志的时候就比较蛋疼。暴力 fs.appendFile
会消耗大量的 file handler,因此用 writable stream 来复用 file handler 是更好的选择。
大概是个不能再简单的思路了。先创建一个写入流
const fs = require('fs'); let logStream = fs.createWriteStream('./test.log');
这样便创建了一个文件写入口,需要时直接调用 logStream.write
即可写入数据。
接下来编写一个用于记录日志的函数替代 console.log
function logger (message) { logStream.write(message); }
至此基本功能就写完啦。但是太简陋了对不对,还是要再加点装饰。
重写 logger
函数,区分 stdout
和 stderr
let logInfo = fs.createWriteStream('./stdout.log'); let logError = fs.createWriteStream('./stderr.log'); let Logger = {}; Logger.info = (message) => { logInfo.write('[INFO] ' + message); } Logger.error = (message) => { logError.write('[ERROR] ' + message); }
感觉还是少了点什么…日期?
Logger.info = (message) => { logInfo.write(new Date().toISOString() + ' [INFO] ' + message + '\n'); }
嗯嗯。这就像样了。把代码整合起来
const fs = require('fs'); let logInfo = fs.createWriteStream('./stdout.log'); let logError = fs.createWiteStream('./stderr.log'); let Logger = {}; Logger.info = (message) => { logInfo.write(new Date().toISOString() + ' [INFO] ' + message + '\n'); } Logger.error = (message) => { logError.write(new Date().toISOString() + ' [ERROR] ' + message + '\n'); } module.exports = Logger;
需要用时
Logger.info('This is an information.');
现在看对应的 stdout.log
文件就有相应内容啦。
~> tail -f stdout.log 2018-11-18T10:52:57.333Z [INFO] This is an information.
不够刺激?
[...Array(10000)].forEach((item, index) => { Logger.info('Hello! ' + index); });
~> tail -f stdout.log ... 2018-11-18T10:58:30.661Z [INFO] Hello! 9990 2018-11-18T10:58:30.661Z [INFO] Hello! 9991 2018-11-18T10:58:30.661Z [INFO] Hello! 9992 2018-11-18T10:58:30.661Z [INFO] Hello! 9993 2018-11-18T10:58:30.661Z [INFO] Hello! 9994 2018-11-18T10:58:30.661Z [INFO] Hello! 9995 2018-11-18T10:58:30.661Z [INFO] Hello! 9996 2018-11-18T10:58:30.661Z [INFO] Hello! 9997 2018-11-18T10:58:30.661Z [INFO] Hello! 9998 2018-11-18T10:58:30.661Z [INFO] Hello! 9999
搞定(┌・ω・)┌超简单的吧。
以上所述就是小编给大家介绍的《使用 fs.WriteStream 编写超简单的日志流》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 使用 Clojure 编写 OpenWhisk 操作,第 1 部分: 使用 Lisp 方言为 OpenWhisk 编写简明的代码
- 使用Sphinx编写文档
- 使用python编写游戏修改器
- 使用 Go 编写 PostgreSQL 触发器
- 使用 Rust + WebAssembly 编写 crc32
- 使用Fake和Paket编写F#脚本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!