如何nodejs中使用winston库记录本地日志?

1.前言

node可以作为服务端使用,可以在electron中使用,使用范围较为广泛,同时,为了方便追溯操作,追溯错误,就需要保存node运行过程中的日志了,nodejs的日志库也有很多,例如winston,Bunyan,Pino等等,本篇文章中使用到的库是winston

2.前置操作

1.需要下载winstonrotating-file-stream库(rotating-file-stream的具体作用后面会说)

bash 复制代码
npm i rotating-file-stream winston

2.导入winstonrotating-file-stream

js 复制代码
const winston = require('winston');
const rfs = require('rotating-file-stream');

3.winston与rotating-file-stream的配置

js 复制代码
// 创建 logger 实例
const logger = winston.createLogger({
  // 自定义级别及优先级(数值越小越重要)
  levels: {
    error: 0, // 错误日志
    warning: 1, // 警告日志
    success: 2, // 成功日志
    currently: 3, // 正在进行日志
    info: 4 // 记录信息日志
  },
  // 设置最低日志级别(这里设置为最低级别,记录一切信息)
  level: 'info',
  format: winston.format.combine(
    // 设置日志中时间的格式
    winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
    // 设置日志的输出格式
    winston.format.printf(({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`),
  ),
  transports: [
    new winston.transports.Stream({
      stream: rfs.createStream('web-log.log', {
        path: '',                // 文件存储地址
        size: '1M',          // 单个文件最大 1MB
        maxFiles: 10,        // 最多保留 10 个文件
        compress: false,
        rotate: 10           // 保留文件数
      })
    })
  ]
});

4.代码解析

1.rotating-file-stream库的作用? rotating-file-stream库适用于设置本地记录的日志的流转,并且指定日志存储的路径,例如上方代码的配置即当单个日志文件超出1mb时自动创建新的日志文件,当历史的日志文件超出10个时,则会删除最初的日志文件,这样可以保证日志的数量不会无底线的增加,也可以有效的控制每个日志文件的大小

2.这么多第三方日志记录的库,为什么选择winston? 因为winstonpythonlogger模块非常类似,并且功能较为强大,层级分明,只要能配置好,基本上可以满足很多需求,所以选择了winston

5.总结

以上就是本篇博客的全部内容了,如果有任何疑问或者需要讨论的地方,欢迎私信或者评论😁

相关推荐
Codebee2 分钟前
OneCode3.0-RAD 可视化设计器 配置手册
前端·低代码
深兰科技3 分钟前
深兰科技:搬迁公告,我们搬家了
javascript·人工智能·python·科技·typescript·laravel·深兰科技
葡萄城技术团队17 分钟前
【SpreadJS V18.2 新版本】设计器新特性:四大主题方案,助力 UI 个性化与品牌适配
前端
lumi.27 分钟前
Swiper属性全解析:快速掌握滑块视图核心配置!(2.3补充细节,详细文档在uniapp官网)
前端·javascript·css·小程序·uni-app
调皮LE29 分钟前
可放大缩小弹窗组件,基于element-ui的vue2版本
前端
陈随易32 分钟前
10年老前端,分享20+严选技术栈
前端·后端·程序员
我的小月月38 分钟前
基于Canvas实现的网页取色器功能解析
前端
汪子熙42 分钟前
计算机世界里的 blob:从数据库 BLOB 到 Git、Web API 与云存储的二进制宇宙
后端
芝士加1 小时前
还在用html2canvas?介绍一个比它快100倍的截图神器!
前端·javascript·开源
阿虎儿1 小时前
React 引用(Ref)完全指南
前端·javascript·react.js