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

更新日期: 2020-01-16阅读: 1.9k标签: 日志

平常都使用console来打印 node 脚本执行时需要看到的信息,但这些信息也就只能在控制台查看。假如你希望将打印的信息记录到文件查看的话,那就往下看看吧。


1、前言

期望:

  • 每次运行脚本时,生成log日志存储到本地
  • 每次执行脚本,之前日志内容清空

需要了解的知识点:

  • node.js 中的fs模块
  • node.js 中的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 options = {
    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);
   }
});
复制代码

至此,我期望得到的日志文件就完成了,完整代码为:

// index.js

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');

大家可以复制到自己的本地去跑跑看,终端执行一下:

node index.js


5、其他

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


链接: https://www.fly63.com/article/detial/7461

前端日志上报的新姿势“Beacon”

在前端应用越来复杂的今天,为了监控前端应用是否正常运行,通常会在前端收集一些错误与性能等数据,最终我们会将这些数据上报到服务端。上报的方式有很多,理论上我们只要能把数据发给服务端就行了

Nginx 日志自定义记录及启用日志缓冲区

如果想统计网站的访问来源信息,可以用 php 获取信息,记录到数据库的形式,也可以直接使用 nginx 提供的访问日志,来记录网站的访问详情,管理员可以通过分析 nginx 的访问日志,来分析用户的访问来源,访问行为详情

Node.JS应用最佳实践:日志

日志记录是每个开发人员从第一天编写代码时就要做的事情,但很少有人知道它可以产生的价值和最佳实践。在本文中,我们将讨论以下主题:什么是日志,为什么很重要性?

用 Mongoose 插件记录Node.js API 日志

随着程序的增长,日志记录成为跟踪所有内容的关键部分。它对于调试目的尤为重要。现在已经有了 npm 的日志记录模块。这些模块可以将日志存储在不同格式或级别的文件中。我们将使用流行的ORM Mongoose

nodejs如何打印日志文件?

通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单介绍一下。

前端日志管理模块的设计与实现

在项目中,我们会频繁用到 ​ ​console.log()​ ​ 来输出一些关键信息到控制台中,有助于开发调试,以及问题的排查,待项目上线后,这些调试日志又得及时清除。

node log4js入门

nodeJs 自己的log 输出一堆讯息,要从这么多又杂的讯息中找出问题,是件非常辛苦的事情。log4js 是一款基于Node 环境下较好用的log 模组,本篇简单介绍log4js 的使用方式。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!