Koa2 中使用 log4js 记录日志

介绍

在 Web 开发中,日志记录是非常重要的,它可以帮助开发者了解程序的运行状况,以及帮助排查问题。本文将介绍如何在 Koa2 中使用 log4js 记录日志。

log4js 简介

log4js 是 Node.js 的一个轻量级日志库,可以为日志输出进行配置,并支持多种输出方式,例如控制台日志、文件日志、邮件日志等。log4js 提供了方便的日志级别设置,可以仅输出错误级别的日志以帮助排查问题,同时也支持多进程日志记录等高级功能。

安装 log4js

Koa2 使用 log4js 支持记录日志,需要先进行安装:

npm install log4js

配置 log4js

log4js 支持多种配置方式,可以将配置信息放在 JSON 文件中,也可以通过 JavaScript 代码进行配置。下面我们用 JavaScript 代码进行配置:

const log4js = require('log4js');
log4js.configure({
  appenders: {
    console: { type: 'console' },
    errorLogs: {
      type: 'file',
      filename: 'logs/error.log',
      maxLogSize: 1024 * 1024,
      backups: 3,
      compress: true
    },
    infoLogs: {
      type: 'file',
      filename: 'logs/info.log',
      maxLogSize: 1024 * 1024,
      backups: 3,
      compress: true
    }
  },
  categories: {
    default: { appenders: ['console'], level: 'debug' },
    errorLogger: { appenders: ['errorLogs'], level: 'error' },
    infoLogger: { appenders: ['infoLogs'], level: 'info' }
  }
});

上面配置了 3 个 appender,其中 console appender 是控制台输出日志,另外两个是文件输出日志,maxLogSize 限制每个日志文件的最大大小(单位: 字节),backups 指定保留几个备份,compress 是否开启压缩备份文件,categories 定义了不同类型的日志输出级别。

Koa2 中使用 log4js

在 Koa2 中使用 log4js 可以通过中间件进行添加,以下是一个简单的使用示例:

const Koa = require('koa');
const log4js = require('log4js');
const app = new Koa();

const errorLogger = log4js.getLogger('errorLogger');
const infoLogger = log4js.getLogger('infoLogger');

app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const end = Date.now();
  infoLogger.info(`${ctx.method} ${ctx.url} - ${ctx.status} - ${end - start}ms`);
});

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    errorLogger.error(`${err.status || 500}-${err.message}-${ctx.method}-${ctx.url}-${ctx.ip}`);
  }
});

app.use(async (ctx) => {
  ctx.body = 'Hello, world!';
});

app.listen(3000);

console.log('Server is started at http://localhost:3000');

上面的代码中,我们通过 log4js.getLogger() 方法创建了两个 logger 实例,分别用于记录错误日志和信息日志。在第一个中间件中,我们通过 infoLogger 的 info() 方法记录了请求的 URL、状态码和处理时间;在第二个中间件中,我们通过 errorLogger 的 error() 方法记录了请求的错误信息(如果有的话)。

总结

在本文中,我们介绍了 Koa2 和 log4js,并介绍了如何在 Koa2 中使用 log4js 记录日志。log4js 的强大功能可以帮助开发者快速定位和解决问题,是开发 Web 应用必备的工具之一。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a8e1cdadd4f0e0ff22099f


纠错反馈