LogUtils.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.ruoyi.common.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import org.apache.shiro.SecurityUtils;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import javax.servlet.http.HttpServletRequest;
  7. import java.io.PrintWriter;
  8. import java.io.StringWriter;
  9. import java.util.Map;
  10. /**
  11. * 处理并记录日志文件
  12. *
  13. * @author ruoyi
  14. */
  15. public class LogUtils
  16. {
  17. public static final Logger ERROR_LOG = LoggerFactory.getLogger("sys-error");
  18. public static final Logger ACCESS_LOG = LoggerFactory.getLogger("sys-access");
  19. /**
  20. * 记录访问日志 [username][jsessionid][ip][accept][UserAgent][url][params][Referer]
  21. *
  22. * @param request
  23. */
  24. public static void logAccess(HttpServletRequest request)
  25. {
  26. String username = getUsername();
  27. String jsessionId = request.getRequestedSessionId();
  28. String ip = IpUtils.getIpAddr(request);
  29. String accept = request.getHeader("accept");
  30. String userAgent = request.getHeader("User-Agent");
  31. String url = request.getRequestURI();
  32. String params = getParams(request);
  33. StringBuilder s = new StringBuilder();
  34. s.append(getBlock(username));
  35. s.append(getBlock(jsessionId));
  36. s.append(getBlock(ip));
  37. s.append(getBlock(accept));
  38. s.append(getBlock(userAgent));
  39. s.append(getBlock(url));
  40. s.append(getBlock(params));
  41. s.append(getBlock(request.getHeader("Referer")));
  42. getAccessLog().info(s.toString());
  43. }
  44. /**
  45. * 记录异常错误 格式 [exception]
  46. *
  47. * @param message
  48. * @param e
  49. */
  50. public static void logError(String message, Throwable e)
  51. {
  52. String username = getUsername();
  53. StringBuilder s = new StringBuilder();
  54. s.append(getBlock("exception"));
  55. s.append(getBlock(username));
  56. s.append(getBlock(message));
  57. ERROR_LOG.error(s.toString(), e);
  58. }
  59. /**
  60. * 记录页面错误 错误日志记录 [page/eception][username][statusCode][errorMessage][servletName][uri][exceptionName][ip][exception]
  61. *
  62. * @param request
  63. */
  64. public static void logPageError(HttpServletRequest request)
  65. {
  66. String username = getUsername();
  67. Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
  68. String message = (String) request.getAttribute("javax.servlet.error.message");
  69. String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
  70. Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
  71. if (statusCode == null)
  72. {
  73. statusCode = 0;
  74. }
  75. StringBuilder s = new StringBuilder();
  76. s.append(getBlock(t == null ? "page" : "exception"));
  77. s.append(getBlock(username));
  78. s.append(getBlock(statusCode));
  79. s.append(getBlock(message));
  80. s.append(getBlock(IpUtils.getIpAddr(request)));
  81. s.append(getBlock(uri));
  82. s.append(getBlock(request.getHeader("Referer")));
  83. StringWriter sw = new StringWriter();
  84. while (t != null)
  85. {
  86. t.printStackTrace(new PrintWriter(sw));
  87. t = t.getCause();
  88. }
  89. s.append(getBlock(sw.toString()));
  90. getErrorLog().error(s.toString());
  91. }
  92. public static String getBlock(Object msg)
  93. {
  94. if (msg == null)
  95. {
  96. msg = "";
  97. }
  98. return "[" + msg.toString() + "]";
  99. }
  100. protected static String getParams(HttpServletRequest request)
  101. {
  102. Map<String, String[]> params = request.getParameterMap();
  103. return JSON.toJSONString(params);
  104. }
  105. protected static String getUsername()
  106. {
  107. return (String) SecurityUtils.getSubject().getPrincipal();
  108. }
  109. public static Logger getAccessLog()
  110. {
  111. return ACCESS_LOG;
  112. }
  113. public static Logger getErrorLog()
  114. {
  115. return ERROR_LOG;
  116. }
  117. }