/common/src/main/java/com/sishuok/es/common/utils/LogUtils.java
Java | 150 lines | 104 code | 27 blank | 19 comment | 7 complexity | 2188633bc5a26c4cba26cfeaab20d1b1 MD5 | raw file
- package com.sishuok.es.common.utils;
- import com.alibaba.fastjson.JSON;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Maps;
- import org.apache.shiro.SecurityUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.servlet.http.HttpServletRequest;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.util.Enumeration;
- import java.util.List;
- import java.util.Map;
- public class LogUtils {
- public static final Logger ERROR_LOG = LoggerFactory.getLogger("es-error");
- public static final Logger ACCESS_LOG = LoggerFactory.getLogger("es-access");
- /**
- * 记录访问日志
- * [username][jsessionid][ip][accept][UserAgent][url][params][Referer]
- *
- * @param request
- */
- public static void logAccess(HttpServletRequest request) {
- String username = getUsername();
- String jsessionId = request.getRequestedSessionId();
- String ip = IpUtils.getIpAddr(request);
- String accept = request.getHeader("accept");
- String userAgent = request.getHeader("User-Agent");
- String url = request.getRequestURI();
- String params = getParams(request);
- String headers = getHeaders(request);
- StringBuilder s = new StringBuilder();
- s.append(getBlock(username));
- s.append(getBlock(jsessionId));
- s.append(getBlock(ip));
- s.append(getBlock(accept));
- s.append(getBlock(userAgent));
- s.append(getBlock(url));
- s.append(getBlock(params));
- s.append(getBlock(headers));
- s.append(getBlock(request.getHeader("Referer")));
- getAccessLog().info(s.toString());
- }
- /**
- * 记录异常错误
- * 格式 [exception]
- *
- * @param message
- * @param e
- */
- public static void logError(String message, Throwable e) {
- String username = getUsername();
- StringBuilder s = new StringBuilder();
- s.append(getBlock("exception"));
- s.append(getBlock(username));
- s.append(getBlock(message));
- ERROR_LOG.error(s.toString(), e);
- }
- /**
- * 记录页面错误
- * 错误日志记录 [page/eception][username][statusCode][errorMessage][servletName][uri][exceptionName][ip][exception]
- *
- * @param request
- */
- public static void logPageError(HttpServletRequest request) {
- String username = getUsername();
- Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
- String message = (String) request.getAttribute("javax.servlet.error.message");
- String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
- Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
- if (statusCode == null) {
- statusCode = 0;
- }
- StringBuilder s = new StringBuilder();
- s.append(getBlock(t == null ? "page" : "exception"));
- s.append(getBlock(username));
- s.append(getBlock(statusCode));
- s.append(getBlock(message));
- s.append(getBlock(IpUtils.getIpAddr(request)));
- s.append(getBlock(uri));
- s.append(getBlock(request.getHeader("Referer")));
- StringWriter sw = new StringWriter();
- while (t != null) {
- t.printStackTrace(new PrintWriter(sw));
- t = t.getCause();
- }
- s.append(getBlock(sw.toString()));
- getErrorLog().error(s.toString());
- }
- public static String getBlock(Object msg) {
- if (msg == null) {
- msg = "";
- }
- return "[" + msg.toString() + "]";
- }
- protected static String getParams(HttpServletRequest request) {
- Map<String, String[]> params = request.getParameterMap();
- return JSON.toJSONString(params);
- }
- private static String getHeaders(HttpServletRequest request) {
- Map<String, List<String>> headers = Maps.newHashMap();
- Enumeration<String> namesEnumeration = request.getHeaderNames();
- while(namesEnumeration.hasMoreElements()) {
- String name = namesEnumeration.nextElement();
- Enumeration<String> valueEnumeration = request.getHeaders(name);
- List<String> values = Lists.newArrayList();
- while(valueEnumeration.hasMoreElements()) {
- values.add(valueEnumeration.nextElement());
- }
- headers.put(name, values);
- }
- return JSON.toJSONString(headers);
- }
- protected static String getUsername() {
- return (String) SecurityUtils.getSubject().getPrincipal();
- }
- public static Logger getAccessLog() {
- return ACCESS_LOG;
- }
- public static Logger getErrorLog() {
- return ERROR_LOG;
- }
- }