auto_finish_logger.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use strict';
  2. /**
  3. * 自动记录日志
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/10/30
  7. * @version
  8. */
  9. module.exports = options => {
  10. return async function autoFinishLogger(ctx, next) {
  11. await next();
  12. const bLogger = ctx.getLogger('finish');
  13. const responseTime = new Date();
  14. const runTime = responseTime.getTime() - responseTime.getTime();
  15. if (ctx.session && ctx.session.sessionUser) {
  16. const logData = {
  17. requestTime: ctx.logTime,
  18. responseTime, runTime,
  19. method: ctx.method,
  20. user: ctx.session.sessionUser,
  21. project: ctx.session.sessionProject,
  22. data: ctx.request.body,
  23. };
  24. bLogger.info(JSON.stringify(logData));
  25. } else {
  26. const logData = {
  27. requestTime: ctx.logTime,
  28. responseTime, runTime,
  29. method: ctx.method,
  30. data: ctx.body,
  31. };
  32. bLogger.info(JSON.stringify(logData));
  33. }
  34. };
  35. };