【化蛹为蝶七】聊聊 Node 的日志存储

991 阅读3分钟

这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

上篇 我唠了唠 Nextjs getInitialProps 执行和注意事项,以及不太适应使用它的小总结 ​

今天再补个项目里通常都需要做的小坑:日志存储

以下正文

日志存储

无论是在开发调试还是线上回溯,我们都会依赖日志 ​

我们可以在开发环境主动抛出日志调试,也可以根据线上报错日志解决问题 ​

而将日志以文件形式存储也是非常必要的,以防止服务崩掉时实时日志无法查看 ​

而我们如果把所有日志直接输出到文件记录的话,会存在几个问题:

  1. 日积月累之下日志文件必然会堆积如山把服务器空间占满
  2. 日志只输出到一份文件的话,这个文件必然会愈加庞大,导致读写困难
  3. 不同级别 info/error/warning 的日志不进行分类的话,查看时也比较混乱

因此,如何合理的存储服务日志,就是服务端开发在搭架子时就需要考虑的问题 ​

前端在使用 Node 进行服务端渲染时,也是存在各种 HTTP 访问日志和服务端数据操作等日志输出的 ​

则,以下主要叙述我在 Node 端是如何存储日志且解决上述存储日志的几个问题的 ​

日志器的定义和初始化

终端日志我们都是使用 console.log 直接打印到终端 ​

然鹅在 Node 端,console.log 都是儿戏 ​

梳理一下我们需要满足日志存储的几个需求:

  1. 日志文件根据日志类型进行分类存储
  2. 日志文件能够以天为单位分文件记录
  3. 日志当然还需要在终端输出
  4. 日志文件需要保持一定数量,可以定时清除历史旧日志文件

先放下自己定义的日志器代码

server/tools/logger/index.js

我在这篇有一行初始化日志器的触发代码

跟目录/server.js

后续预告:

vx👦:mmm7nnn

公号🐓:醒途

邮箱📧:suanzao@wacai.com(欢迎找我内推)

如果喜欢这个系列请给我一个点赞👍或者一个关注➕,诸君的支持是我创作的最大的动力 ​