zoukankan      html  css  js  c++  java
  • springboot记录操做日志

    1.拦截
    import java.util.Date; import java.util.Enumeration; import javax.servlet.FilterChain; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import com.
    *.reconciliation.common.ThreadUtil; import com.*.SystemOperationLogInfo; import com.*.reconciliation.service.SystemOperationLogService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @Aspect @Component public class DBLoggerAspect { private ObjectMapper mapper; @Autowired public DBLoggerAspect(ObjectMapper mapper) { this.mapper = mapper; } @Autowired private SystemOperationLogService systemOperationLogService; @Around("@annotation(dbLogger)") public Object exec(ProceedingJoinPoint invocation, DBLogger dbLogger) throws Throwable { ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = servletRequestAttributes.getRequest(); Object result = null; Date startTime = new Date(); try { result = invocation.proceed(); } catch (Exception e) { throw e; } finally { Object obj = result; Date endTime = new Date(); ThreadUtil.logPool.execute(()->{ HttpSession session = request.getSession(); String userName = (String) session.getAttribute("userName"); StringBuffer str = new StringBuffer(); SystemOperationLogInfo systemOperationLogInfo = new SystemOperationLogInfo(); systemOperationLogInfo.setOperationUser(userName); systemOperationLogInfo.setOperationName(dbLogger.operationName()); systemOperationLogInfo.setRequestUrl(request.getRequestURI()); if(invocation.getArgs() != null) { for (Object object : invocation.getArgs()) { if (object instanceof MultipartFile || object instanceof ServletRequest || object instanceof ServletResponse || object instanceof FilterChain ) { continue; } try { str.append(mapper.writeValueAsString(object)); } catch (JsonProcessingException e) { e.printStackTrace(); } } systemOperationLogInfo.setRequestData(str.toString()); } systemOperationLogInfo.setRequestStartTime(startTime); systemOperationLogInfo.setRequestEndTime(endTime); systemOperationLogInfo.setUsedTime(Integer.parseInt(""+(endTime.getTime() - startTime.getTime()))); JSONObject headerJson = new JSONObject(); Enumeration<String> headers = request.getHeaderNames(); while(headers.hasMoreElements()) { String key = headers.nextElement(); String value = request.getHeader(key); headerJson.put(key, value); } systemOperationLogInfo.setRequestHeader(headerJson.toString()); systemOperationLogInfo.setRequestMethod(request.getMethod()); try { systemOperationLogInfo.setResponseData(mapper.writeValueAsString(obj)); } catch (JsonProcessingException e) { e.printStackTrace(); } systemOperationLogInfo.setSystemName("accountcenter"); systemOperationLogService.save(systemOperationLogInfo); }); } return result; }
    2.
    @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented
    public @interface DBLogger { String operationName(); }
    
    
    3.使用
    @DBLogger(operationName = "*列表查询")
    
    }
    人这辈子没法做太多事情,所以每做一件事都要做到精彩绝伦。 因为,这就是我的宿命。人生苦短,你明白吗? 所以这是我为人生做出的选择
  • 相关阅读:
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    [PHP类] 分享一个强大的HTTP访问类(可做采集)
    php程序检测页面是否被百度收录
    php文章相似度计算 不用similar_text()函数
    php实现天干地支计算器示例 php算命程序
    Nginx 1.5.2 + PHP 5.5.1 + MySQL 5.6.10 在 CentOS 下的编译安装
    call和apply实现的继承
    Html语义化标签
  • 原文地址:https://www.cnblogs.com/junjun1578/p/13602649.html
Copyright © 2011-2022 走看看