express 捕获全局错误并保存日志

981 阅读1分钟

捕获全局错误并保存日志(仅适用于express)

npm install handle-err
yarn add handle-err

  1. 在app.js里,引入express之后立即引入handle-err

  2. 同时不再需要写try/catch了,直接抛出错误(throw new Error())就可以了

  3. 所有页面的错误都在app.js的错误捕获中间件里进行统一处理

日志类型写法
ALLthrow new Error('some info')
INFOthrow new Error('INFO: some info')
WARNthrow new Error('WARN: some info')
ERRORthrow new Error('ERROR: some info')
DEBUGthrow new Error('DEBUG: some info')
SOME_NAMEthrow new Error('SOME_NAME: some info')

示例代码

const express = require('express')
require('handle-err')

const app = express()

app.use(async (req, res) => {
  const user = await getUser()
  if (!user) throw new Error('Unauthorized')
});
 

// 所有页面的错误,都在这里捕获
app.use((err, req, res, next) => {
  if(err.message === 'Unauthorized') {
    res.status(401).send(err.message)
  }
  next(err)
})

保存

会将日志保存在根目录的logs/目录下
image.png