如何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.总结

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

相关推荐
大傻^几秒前
Spring AI Alibaba 快速入门:基于通义千问的AI应用开发环境搭建
java·人工智能·后端·spring·springai·springaialibaba
小J听不清8 分钟前
CSS 外边距(margin)全解析:取值规则 + 实战用法
前端·javascript·css·html·css3
还是大剑师兰特29 分钟前
Stats.js 插件详解及示例(完全攻略)
前端·大剑师·stats
前端小超超30 分钟前
Vue计算属性computed:可写与只读的区别
前端·javascript·vue.js
IT_陈寒1 小时前
SpringBoot实战:3个隐藏技巧让你的应用性能飙升50%
前端·人工智能·后端
彭于晏Yan1 小时前
MQTT消息服务
spring boot·后端·中间件
weixin199701080161 小时前
唯品会商品详情页前端性能优化实战
前端·性能优化
爱学习的程序媛1 小时前
【Web前端】Pinia状态管理详解
前端·vue.js·typescript
爱学习的程序媛2 小时前
“数字孪生”详解与前端技术栈
前端·人工智能·计算机视觉·智慧城市·信息与通信
海石2 小时前
微信小程序开发02:原始人也能看懂的着色器与视频处理
前端·微信小程序·视频编码