12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 'use strict';
- /**
- * 自动记录日志
- *
- * @author CaiAoLin
- * @date 2017/10/30
- * @version
- */
- const os = require('os');
- module.exports = options => {
- return async function autoFinishLogger(ctx, next) {
- await next();
- if (ctx.url.indexOf('/public/') === 0) return;
- const responseTime = new Date();
- const runTime = responseTime.getTime() - ctx.logInfo.time.getTime();
- let logData;
- if (ctx.session && ctx.session.sessionUser) {
- const cpus = os.cpus();
- const endCpus = 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)}%`
- });
- logData = {
- id: ctx.logId,
- requestTime: ctx.logInfo.time, responseTime, runTime,
- beginCpus: ctx.logInfo.cpus, endCpus,
- user: ctx.session.sessionUser.accountId, userName: ctx.session.sessionUser.name, loginType: ctx.session.sessionUser.loginType,
- pCode: ctx.session.sessionProject.code,
- data: ctx.request.body,
- };
- } else {
- logData = {
- id: ctx.logId, requestTime: ctx.logTime, responseTime, runTime,
- };
- }
- const bLogger = runTime > 500 ? ctx.getLogger('warning') : ctx.getLogger('finish');
- bLogger.info(JSON.stringify(logData));
- await ctx.service.globalLog.responseLog(runTime);
- };
- };
|