'use strict'; /** * 自动记录日志 * * @author CaiAoLin * @date 2017/10/30 * @version */ const os = require('os'); module.exports = options => { return function* autoLogger(next) { this.logId = this.app.uuid.v1(); // 记录业务日志 function getBussinessLogger(ctx) { if (ctx.url.match(/ledger/)) { return ctx.getLogger('ledger'); } else if (ctx.url.match(/stage/)) { return ctx.getLogger('stage'); } return ctx.getLogger('mixed'); } if (this.url.indexOf('/public/') !== 0) { const bLogger = getBussinessLogger(this); if (this.session.sessionUser) { const logData = { method: this.method, user: this.session.sessionUser, project: this.session.sessionProject, data: this.request.body, }; bLogger.info(JSON.stringify(logData)); } else { const logData = { method: this.method, data: this.body, }; bLogger.info(JSON.stringify(logData)); } this.logInfo = { id: this.logId, time: new Date() }; const cpus = os.cpus(); this.logInfo.cpus = cpus.map(x => { return `${((1-x.times.idle/(x.times.idle+x.times.user+x.times.nice+x.times.sys+x.times.irq))*100).toFixed(2)}%` }); } yield next; }; };