Nuxt日志监控(服务端请求日志)

此文章主要讲解如何使用Nuxt进行日志监控,例如服务端请求日志,方便线上出现问题能及时排查问题所在

一、下载依赖
npm install winston winston-daily-rotate-file
二、plugin下创建日志处理插件winston.js,对日志进行分级
export default function ({ app }) {
  if (process.server) {
    const winston = require('winston');
    const path = require('path');
    const { combine, timestamp } = winston.format;
    const infoLogPath = path.resolve(process.cwd(), './logs', `info.log`);
    const errorLogPath = path.resolve(process.cwd(), './logs', `error.log`);
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.combine(
        winston.format.timestamp(),
        winston.format.printf(({ timestamp, level, message }) => {
          return `${timestamp} [${level}]: ${message}`;
        })
      ),
      transports: [
        new winston.transports.File({
          format: combine(timestamp()),
          level: 'info',
          filename: infoLogPath,
          maxsize: 5 * 1024 * 1024,  // 单个日志文件大小
          maxFiles: 3 // 最大文件数
        }),
        new winston.transports.File({
          format: combine(timestamp()),
          level: 'error',
          filename: errorLogPath,
          maxsize: 5 * 1024 * 1024,
          maxFiles: 3
        })
      ]
    });
    app.$winstonLog = logger;
  }
}
三、插件挂载nuxt.config.js

一定要放在plugins中最前面,后续的插件中才能拿到app.$winstonLog

// nuxt.config.js
export default {
  plugins: [
    { src: '~/plugin/winston.js', ssr: true }
   ....
  ]
}
四、在服务端请求axios 里做日志打点

捕获在Node端接口请求错误,对日志进行添加

// utils/axios.js

export default ({ $axios, app }) => {
  $axios.onResponse((response) => {
    // app.$winstonLog只在服务端存在,需要判断是否存在 正常返回这里可以无需记录
    if (app.$winstonLog) {
      app.$winstonLog.info(`[${response.status}] ${response.request.path}`);
    }
    return response.data;
  });

  $axios.onError((err) => {
    // 接口请求异常 添加日志记录
    if (app.$winstonLog) {
      app.$winstonLog.error(
        `ServerApi | ${err.request.path} | ${err.message}`
      );
      app.$winstonLog.error(err.response && err.response.data);
    }
  });
};
五、查看日志记录

winston会在每次请求页面的时候自动打印一次日志,在 node 端出错的时候也会自动打印日志,会在当前项目中生成logs文件夹

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值