|
@@ -7,32 +7,36 @@
|
|
|
* @date 2017/10/30
|
|
|
* @version
|
|
|
*/
|
|
|
+const os = require('os');
|
|
|
|
|
|
module.exports = options => {
|
|
|
return async function autoFinishLogger(ctx, next) {
|
|
|
await next();
|
|
|
|
|
|
- const bLogger = ctx.getLogger('finish');
|
|
|
+ if (ctx.url.indexOf('/public/') === 0) return;
|
|
|
+
|
|
|
const responseTime = new Date();
|
|
|
- const runTime = responseTime.getTime() - responseTime.getTime();
|
|
|
+ const runTime = responseTime.getTime() - ctx.logInfo.time.getTime();
|
|
|
+ let logData;
|
|
|
if (ctx.session && ctx.session.sessionUser) {
|
|
|
- const logData = {
|
|
|
- requestTime: ctx.logTime,
|
|
|
- responseTime, runTime,
|
|
|
- method: ctx.method,
|
|
|
- user: ctx.session.sessionUser,
|
|
|
- project: ctx.session.sessionProject,
|
|
|
+ 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,
|
|
|
};
|
|
|
- bLogger.info(JSON.stringify(logData));
|
|
|
} else {
|
|
|
- const logData = {
|
|
|
- requestTime: ctx.logTime,
|
|
|
- responseTime, runTime,
|
|
|
- method: ctx.method,
|
|
|
+ logData = {
|
|
|
+ requestTime: ctx.logTime, responseTime, runTime,
|
|
|
data: ctx.body,
|
|
|
};
|
|
|
- bLogger.info(JSON.stringify(logData));
|
|
|
}
|
|
|
+ const bLogger = runTime > 500 ? ctx.getLogger('warning') : ctx.getLogger('finish');
|
|
|
+ bLogger.info(JSON.stringify(logData));
|
|
|
};
|
|
|
};
|