SystemLogUtils.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package com.ruoyi.common.utils;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import com.ruoyi.common.constant.CommonConstant;
  5. import com.ruoyi.common.utils.security.ShiroUtils;
  6. import com.ruoyi.common.utils.spring.SpringUtils;
  7. import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
  8. import com.ruoyi.project.monitor.logininfor.service.LogininforServiceImpl;
  9. import eu.bitwalker.useragentutils.UserAgent;
  10. /**
  11. * 记录用户日志信息
  12. *
  13. * @author ruoyi
  14. */
  15. public class SystemLogUtils
  16. {
  17. private static final Logger sys_user_logger = LoggerFactory.getLogger("sys-user");
  18. /**
  19. * 记录格式 [ip][用户名][操作][错误消息]
  20. * <p/>
  21. * 注意操作如下: loginError 登录失败 loginSuccess 登录成功 passwordError 密码错误 changePassword 修改密码 changeStatus 修改状态
  22. *
  23. * @param username
  24. * @param op
  25. * @param msg
  26. * @param args
  27. */
  28. public static void log(String username, String status, String msg, Object... args)
  29. {
  30. StringBuilder s = new StringBuilder();
  31. s.append(LogUtils.getBlock(ShiroUtils.getIp()));
  32. s.append(AddressUtils.getRealAddressByIP(ShiroUtils.getIp()));
  33. s.append(LogUtils.getBlock(username));
  34. s.append(LogUtils.getBlock(status));
  35. s.append(LogUtils.getBlock(msg));
  36. sys_user_logger.info(s.toString(), args);
  37. if (CommonConstant.LOGIN_SUCCESS.equals(status) || CommonConstant.LOGOUT.equals(status))
  38. {
  39. saveOpLog(username, msg, CommonConstant.SUCCESS);
  40. }
  41. else if (CommonConstant.LOGIN_FAIL.equals(status))
  42. {
  43. saveOpLog(username, msg, CommonConstant.FAIL);
  44. }
  45. }
  46. public static void saveOpLog(String username, String message, String status)
  47. {
  48. UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"));
  49. // 获取客户端操作系统
  50. String os = userAgent.getOperatingSystem().getName();
  51. // 获取客户端浏览器
  52. String browser = userAgent.getBrowser().getName();
  53. LogininforServiceImpl logininforService = SpringUtils.getBean(LogininforServiceImpl.class);
  54. Logininfor logininfor = new Logininfor();
  55. logininfor.setLoginName(username);
  56. logininfor.setStatus(status);
  57. logininfor.setIpaddr(ShiroUtils.getIp());
  58. logininfor.setLoginLocation(AddressUtils.getRealAddressByIP(ShiroUtils.getIp()));
  59. logininfor.setBrowser(browser);
  60. logininfor.setOs(os);
  61. logininfor.setMsg(message);
  62. logininforService.insertLogininfor(logininfor);
  63. }
  64. }