美文网首页
使用nuxt-winson-log打印nuxt日志与日志分级

使用nuxt-winson-log打印nuxt日志与日志分级

作者: 般犀 | 来源:发表于2020-07-11 19:16 被阅读0次

最近开发nuxt需要在nuxt上打点日志,以便将来排查问题。
看到了一款nuxt-winson-log可以符合要求。
是基于winston包裹了一层。

修改日志的保存位置

nuxt-winson-log的默认保存路径是当前文件夹下的logs文件夹。修改配置让日志保存在其他路径:

// nuxt.config.js
export default {
 modules:[
     'xxxx其他modules',
     [
       'nuxt-winston-log',
       {
          logPath:
             process.env.npm_lifecycle_event === 'build' ||
             process.env.NODE_ENV === 'development'
               ? './logs'
               : `/data/weblog/nodejs/${process.env.npm_package_name}`,
           logName: `${process.env.npm_package_name}.log`
       }
     ]
  ]
}

区分了开发和生产的日志存放目录。
同时使用npm_lifecycle_eventNODE_ENV而不是process.env.NODE_ENV === 'production'去做判断是因为构建过程中的process.env.NODE_ENV也是production,会因为构建机器上没有这个日志存放目录导致构建失败。

对日志做分级。

日志简单地区分的话有两种,日常日志(info)和错误(error)日志。nuxt-winson-log默认会把两种日志都放在同一个日志文件里面。可以通过配置将两种日志打到不同的日志文件。

// nuxt.config.js
import path from 'path';
import { format, transports } from 'winston';
const { combine, timestamp } = format;

// 日志存放路径
const infoLogPath = path.resolve(process.cwd(), './logs', `info.log`);
const errorLogPath = path.resolve(process.cwd(), './logs', `error.log`);

export default {
  modules: ['nuxt-winston-log'],
  winstonLog: {
    loggerOptions: {
      transports: [
        new transports.File({
          format: combine(timestamp()),
          level: 'info',
          filename: infoLogPath,
          maxsize: 5 * 1024 * 1024  // 这个是限制日志文件的大小
        }),
        new transports.File({
          format: combine(timestamp()),
          level: 'error',
          filename: errorLogPath,
          maxsize: 5 * 1024 * 1024
        })
      ]
    }
  },
}

这样配置就可以实现infoerror日志分级了!如果发现启动的时候两个日志文件没有生成,可以检查一下设置的保存路径是否存在。

在 axios 里做日志打点

因为在 node 端发起的接口请求如果500了是会导致返回错误页面的,所以在做好try...catch之外,还要对接口的成功与否与日志记录。

// plugins/axios.js

export default ({ $axios, $winstonLog }) => {
  $axios.onResponse((response) => {
    // $winstonLog只在服务端存在,需要判断是否存在
    if ($winstonLog) {
      $winstonLog.info(`[${response.status}] ${response.request.path}`);
    }
    return response.data;
  });

  $axios.onError((err) => {
    if ($winstonLog) {
      $winstonLog.error(
        `[${err.status}] | ${err.request.path} | ${err.message}`
      );
      $winstonLog.error(err.response && err.response.data);
    }
  });
};

在plugins文件夹里新建一个axios.js插件,正常的请求打在info日志,错误请求打error日志。

nuxt-winson-log的自动打日志

nuxt-winston-log会在每次请求页面的时候自动打印一次日志,在 node 端出错的时候也会自动打印日志。

最后打出来的日志效果:


相关文章

  • 使用nuxt-winson-log打印nuxt日志与日志分级

    最近开发nuxt需要在nuxt上打点日志,以便将来排查问题。看到了一款nuxt-winson-log可以符合要求。...

  • 错误日志系统建议

    1.日志分级别可以更容易筛选错误日志,但是线上只打印error日志2.错误日志要绑定一个会话ID或者一个key可以...

  • Android日志打印(11)

    内核空间日志打印 日志保存 在linux内核中使用printk来实现日志打印输出且保存到/proc/kmsg,通过...

  • iOS Log打印

    简述 iOS调试中打印日志是一种比较常见的手段,一般都是使用系统的打印日志的方法NSLog,但是这种打印日志的方法...

  • Windows抓取Android和iOS手机上app的log

    一、Android篇 1.使用adb logcat抓取 打印简单日志:adb logcat 打印日志具有详细时间和...

  • Log4j2日志框架集成Slf4j日志门面

    1.说明 本文介绍使用日志门面Slf4j打印日志,底层日志实现使用Log4j2框架,方便以后切换底层日志实现,Lo...

  • 使用log4js打印日志

    使用log4js打印日志 不管在做任何开发的时候,打印日志都是很重要的功能。在Node.js中,最普通的打日志的方...

  • [SpringCloud] 使用 Nacos 作为注册中心日志不

    [SpringCloud] 使用 Nacos 作为注册中心日志不打印 项目使用 log4j2 作为日志框架,配置一...

  • LoggerFactory.getLogger用法

    简述: 使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如:Logger logger = ...

  • 2019-05-28

    Python中的日志模块 logging使用 参数:作用%(levelno)s:打印日志级别的数值%(leveln...

网友评论

      本文标题:使用nuxt-winson-log打印nuxt日志与日志分级

      本文链接:https://www.haomeiwen.com/subject/uwiecktx.html