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日志
如果需要按天分割,或者其他自定义,也可以通过调度设置