egg 拆分 sequelize 日志

本文介绍如何在Egg应用中将Sequelize的日志独立出来,配置到egg-sequelize模块,并自定义按小时或天切割。通过 EggAppConfig 和 FileTransport,实现高效、有序的日志管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

egg中使用插件egg-sequelize

会生成很多的sequelize日志,混淆在打印的logger里

如下:


 拆分生成环境的sequelize日志到egg-sequelize中:

在config/config.prod.js中:

因为获取不到 ctx.logger 对象,所以引用egg-logger中的FileTransfer生成日志配置

import { EggAppConfig, PowerPartial, EggAppInfo } from 'egg';
const Logger = require('egg-logger').Logger;
const FileTransport = require('egg-logger').FileTransport;
const sequelizeLogger = new Logger();
export default (appInfo: EggAppInfo) => {
  // 自定义日志
  sequelizeLogger.set('file', new FileTransport({
    // 生成的文件名egg-sequelize.log
    file:  path.join(appInfo.baseDir, 'logs/egg-sequelize.log'),
    level: 'INFO',
    formatter(meta) {
      return meta.date + ' ' + meta.level + ' ' + meta.pid + ' ' + meta.message;
    },
    encoding: 'utf8',
  }));
 const config: PowerPartial<EggAppConfig> = {
   sequeliz: {
     datasources: [
       {
        delegate: 'xxx',
        baseDir: 'model/xxx',
        dialect: 'mysql',
        host: 'xxx',
        port: 3306,
        database: 'xxx',
        username: 'xxx',
        password: 'xxx',
        timezone: '+08:00',
        pool: {
          max: 3,
          min: 0,
          idle: 60000,
          acquire: 60000,
        },
        // loggging: false 设为false则不打印该数据库的sequelize的日志
        logging(...args) { // 新增自定义的部分
          // if benchmark enabled, log used
          const used = typeof args[1] === 'number' ? `[${args[1]}ms]` : '';
          sequelizeLogger.info('[egg-sequelize]%s %s', used, args[0]);
        },
      },
    ]
  }
}

 配置按小时切割

config.logrotator = {
    filesRotateByHour: [
      path.join(appInfo.baseDir, 'logs/egg-sequelize.log'),
    ],
  };

生成的sequelize日志

 

 如果需要按天分割,或者其他自定义,也可以通过调度设置

GitHub - eggjs/egg-logrotator: Log rotate plugin for eggLog rotate plugin for egg. Contribute to eggjs/egg-logrotator development by creating an account on GitHub.https://github.com/eggjs/egg-logrotator#customize

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值