| 1234567891011121314151617181920212223242526272829303132333435363738394041 | '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 = {                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 = {                requestTime: ctx.logTime, responseTime, runTime,            };        }        const bLogger = runTime > 500 ? ctx.getLogger('warning') : ctx.getLogger('finish');        bLogger.info(JSON.stringify(logData));    };};
 |