这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战
上篇 我唠了唠 Nextjs getInitialProps 执行和注意事项,以及不太适应使用它的小总结
今天再补个项目里通常都需要做的小坑:日志存储
以下正文
日志存储
无论是在开发调试还是线上回溯,我们都会依赖日志
我们可以在开发环境主动抛出日志调试,也可以根据线上报错日志解决问题
而将日志以文件形式存储也是非常必要的,以防止服务崩掉时实时日志无法查看
而我们如果把所有日志直接输出到文件记录的话,会存在几个问题:
- 日积月累之下日志文件必然会堆积如山把服务器空间占满
- 日志只输出到一份文件的话,这个文件必然会愈加庞大,导致读写困难
- 不同级别
info/error/warning的日志不进行分类的话,查看时也比较混乱
因此,如何合理的存储服务日志,就是服务端开发在搭架子时就需要考虑的问题
前端在使用 Node 进行服务端渲染时,也是存在各种 HTTP 访问日志和服务端数据操作等日志输出的
则,以下主要叙述我在 Node 端是如何存储日志且解决上述存储日志的几个问题的
日志器的定义和初始化
终端日志我们都是使用 console.log 直接打印到终端
然鹅在 Node 端,console.log 都是儿戏
梳理一下我们需要满足日志存储的几个需求:
- 日志文件根据日志类型进行分类存储
- 日志文件能够以天为单位分文件记录
- 日志当然还需要在终端输出
- 日志文件需要保持一定数量,可以定时清除历史旧日志文件
先放下自己定义的日志器代码
server/tools/logger/index.js
我在这篇有一行初始化日志器的触发代码
跟目录/server.js
后续预告:
- 一些小问题:目录结构(已填)、引入 Koa(已填)、Yaml 解析(已填)、日志记录与存储(本篇)、@根路径 Import、引入 Less、引入 Reset CSS
- Nextjs 系列序言及项目初始化(已填)
- Nextjs 引入 TypeScript、Ant Design(已填)
- Nextjs 数据获取方式 getInitialProps 简介(已填)
- Nextjs 引入 Prisma 和 Mysql2 存取数据(长文)
- Nextjs 引入 Apollo-Server/Apollo-Client 使用 Graphql(长文)
- Nextjs + Prisma + Graphql Demo 实践(长文)
- Nextjs 如何使用 Session 和 Cookie
- Nextjs 基于 Graphql、Prisma 的 JWT 登录鉴权(长文)
- Nextjs 鉴权后自动跳转登录页
- Graphql 请求如何带上公共 Headers
- Koa Auth 接口预处理之接口鉴权中间件
- 基于 RBAC 模型使用 Graphql + Prisma 实现权限管理(长文)
vx👦:mmm7nnn
公号🐓:醒途
邮箱📧:suanzao@wacai.com(欢迎找我内推)
如果喜欢这个系列请给我一个点赞👍或者一个关注➕,诸君的支持是我创作的最大的动力