文章目录

  • Node.js 在本地生成日志文件
    • 1、前言
    • 2、什么是 fs
    • 3、new console.Console(stdout, stderr, ignoreErrors)
    • 4、node.js 生成日志文件方法
    • 5、其他
    • 6. 参考链接

Node.js 在本地生成日志文件

平常都使用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');
// 也可以设置定时清空内容
setTimeout(() => {fs.writeFile('./a.log', '', function (err) {if(err){console.log(err);}});
}, 1000 * 3600 * 24); // 每24小时清空

可以将此封装起来,然后在需要的地方去调用。logger.log(‘你需要记录的日志’)即可。

5、其他

当然在此基础上你可以拓展其它内容,比如给日志中增加时间戳、区分日志类型储存等。

6. 参考链接

  • http://nodejs.cn/api/console.html#console_new_console_options
  • http://nodejs.cn/api/fs.html#fs_fs_writefile_file_data_options_callback

转载自:Node.js 在本地生成日志文件的方法

Node.js 在本地生成日志文件相关推荐

  1. Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件

    注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...

  2. js处理本地.bin音频文件和node.js的fs模块处理本地.bin音频区别

    1.js处理本地.bin文件 <body><input type="file" name="" id="fileInput" ...

  3. [技巧]用js生成日志文件、获取ip。

    需求:通过js生成日志文件. 1.npm初始化并载入模块 项目根目录初始化npm npm init -y 下载express模块 npm i express 2.引入express搭建基础功能 使用e ...

  4. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...

    本文主要给大家介绍了关于利用node.js实现自动生成前端项目组件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 脚本编写背景 写这个小脚本的初衷是,项目本身添加一个组件太 ...

  5. node.js实现formdata上传文件

    node.js实现formdata上传文件 1.关于formdata XMLHttpRequest Level 2 添加了一个新的接口--FormData.利用 FormData 对象,我们可以通过 ...

  6. nodejs 本地php服务器,node.js创建本地服务器详解

    本文主要和大家分享node.js创建本地服务器详解,简易上手node.js后,我们就可以在自己电脑上创建本地服务器了.希望能帮助到大家. 一.先上代码.//请求Node.js自带的http模块. va ...

  7. NGINX按天生成日志文件的简易配置

    NGINX按天生成日志文件的简易配置 0x01 最近后端童鞋遇到一个小需求,拆分nginx生成的log文件,最好是按天生成,看着她还有很多bug待改的状态,我说这个简单啊,我来吧.曾经搞node后端的 ...

  8. Node.js搭建本地HTTP服务器(微信小程序)

    Node.js搭建本地HTTP服务器(微信小程序) Node.js简易搭建本地HTTP服务器 1. 首先关闭微信开发者工具中的验证 单击工具栏中的详情按钮,选中图中所示选项即可. 2. 将Node.j ...

  9. 使用Node.js在本地搭建HTTP服务器

    使用Node.js在本地搭建HTTP服务器 由于很多人问这个问题,我在这回复一下. 下载安装Node.js 打开命令行 在本地建一个文件夹,进行如下操作 [ 1] 初始化项目,将会自动创建packag ...

最新文章

  1. [Java]jdbc[转]
  2. CentOS7下安装GUI图形界面
  3. rasa聊天机器人_Rasa-X是持续改进聊天机器人的独特方法
  4. Windows平台下sbt的安装设置
  5. OBJECTPROPERTY OBJECT_ID TEXTPTR【转载】
  6. C 语言常见 API(fprintf、fputs、fprintf)
  7. 写一本Linux内核方面的书籍
  8. MVVM设计模式和在WPF中的实现(四) 事件绑定
  9. 荣耀安装google谷歌服务框架_荣耀V20怎么下载安装谷歌服务助手,GMS框架安装教程...
  10. 修复Word打开文档默认显示两页的问题
  11. 红帽linux系统内核版本7,如何查看Linux发行版内核版本及系统版本?
  12. LVGL lv_btn 按钮(9)
  13. PCA主成分分析(原理+例子)
  14. Cocos Creator 编辑器扩展:Quick Finder
  15. 计算机一级重点知识,计算机一级考试重点
  16. SAP FI 应收应付账龄分析-功能研究
  17. 【JS】正则表达式。以vue词法分析、句法分析为例
  18. CSS实现文字垂直居中
  19. java计算机毕业设计房屋租赁网站源码+mysql数据库+系统+lw文档+部署
  20. 1024 程序员节首批 37 位嘉宾阵容公布!院士、技术掌门人、行业精英齐亮相

热门文章

  1. Python OpenCV中色彩空间的转换类型
  2. 程序员面试题精选100题(59)-字符串的组合[算法]
  3. ubuntu 14.04安装chrome浏览器
  4. Get Form type using javascript in CRM 2011
  5. Puppet的一些奇技淫巧
  6. Redis的搭建和Redis的集群搭建
  7. 关于业务系统的架构思考
  8. puppet基础篇(练习篇)
  9. Windows 10 Creators Update 4 月 11 日开始推送
  10. parted--大于2T的分区工具