fix log record,add sync model.

master
liuhulu 7 years ago committed by Limy
parent 12c38988fd
commit a0a8c73fb8

@ -2,6 +2,7 @@ package com.ruoyi.framework.aspectj;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Map; import java.util.Map;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature; import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterReturning;
@ -12,7 +13,10 @@ import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
@ -31,8 +35,8 @@ import com.ruoyi.project.system.user.domain.User;
@Aspect @Aspect
@Component @Component
public class LogAspect @EnableAsync
{ public class LogAspect {
private static final Logger log = LoggerFactory.getLogger(LogAspect.class); private static final Logger log = LoggerFactory.getLogger(LogAspect.class);
@Autowired @Autowired
@ -40,18 +44,17 @@ public class LogAspect
// 配置织入点 // 配置织入点
@Pointcut("@annotation(com.ruoyi.framework.aspectj.lang.annotation.Log)") @Pointcut("@annotation(com.ruoyi.framework.aspectj.lang.annotation.Log)")
public void logPointCut() public void logPointCut() {
{
} }
/** /**
* *
* *
* @param joinPoint * @param joinPoint
*
*/ */
@AfterReturning(pointcut = "logPointCut()") @AfterReturning(pointcut = "logPointCut()")
public void doBefore(JoinPoint joinPoint) public void doBefore(JoinPoint joinPoint) {
{
handleLog(joinPoint, null); handleLog(joinPoint, null);
} }
@ -62,19 +65,16 @@ public class LogAspect
* @param e * @param e
*/ */
@AfterThrowing(value = "logPointCut()", throwing = "e") @AfterThrowing(value = "logPointCut()", throwing = "e")
public void doAfter(JoinPoint joinPoint, Exception e) public void doAfter(JoinPoint joinPoint, Exception e) {
{
handleLog(joinPoint, e); handleLog(joinPoint, e);
} }
private void handleLog(JoinPoint joinPoint, Exception e) @Async
{ private void handleLog(final JoinPoint joinPoint, final Exception e) {
try try {
{
// 获得注解 // 获得注解
Log controllerLog = getAnnotationLog(joinPoint); Log controllerLog = getAnnotationLog(joinPoint);
if (controllerLog == null) if (controllerLog == null) {
{
return; return;
} }
@ -88,14 +88,12 @@ public class LogAspect
String ip = ShiroUtils.getIp(); String ip = ShiroUtils.getIp();
operLog.setOperIp(ip); operLog.setOperIp(ip);
operLog.setOperUrl(ServletUtils.getRequest().getRequestURI()); operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
if (currentUser != null) if (currentUser != null) {
{
operLog.setLoginName(currentUser.getLoginName()); operLog.setLoginName(currentUser.getLoginName());
operLog.setDeptName(currentUser.getDept().getDeptName()); operLog.setDeptName(currentUser.getDept().getDeptName());
} }
if (e != null) if (e != null) {
{
operLog.setStatus(UserConstants.EXCEPTION); operLog.setStatus(UserConstants.EXCEPTION);
operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000)); operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
} }
@ -107,9 +105,7 @@ public class LogAspect
getControllerMethodDescription(controllerLog, operLog); getControllerMethodDescription(controllerLog, operLog);
// 保存数据库 // 保存数据库
operLogService.insertOperlog(operLog); operLogService.insertOperlog(operLog);
} } catch (Exception exp) {
catch (Exception exp)
{
// 记录本地异常日志 // 记录本地异常日志
log.error("==前置通知异常=="); log.error("==前置通知异常==");
log.error("异常信息:{}", exp.getMessage()); log.error("异常信息:{}", exp.getMessage());
@ -120,12 +116,12 @@ public class LogAspect
/** /**
* Controller * Controller
* *
* @param joinPoint * @param joinPoint
*
* @return * @return
* @throws Exception * @throws Exception
*/ */
public static void getControllerMethodDescription(Log log, OperLog operLog) throws Exception public void getControllerMethodDescription(Log log, OperLog operLog) throws Exception {
{
// 设置action动作 // 设置action动作
operLog.setAction(log.action()); operLog.setAction(log.action());
// 设置标题 // 设置标题
@ -133,8 +129,7 @@ public class LogAspect
// 设置channel // 设置channel
operLog.setChannel(log.channel()); operLog.setChannel(log.channel());
// 是否需要保存request参数和值 // 是否需要保存request参数和值
if (log.isSaveRequestData()) if (log.isSaveRequestData()) {
{
// 获取参数的信息,传入到数据库中。 // 获取参数的信息,传入到数据库中。
setRequestValue(operLog); setRequestValue(operLog);
} }
@ -146,8 +141,7 @@ public class LogAspect
* @param operLog * @param operLog
* @param request * @param request
*/ */
private static void setRequestValue(OperLog operLog) private void setRequestValue(OperLog operLog) {
{
Map<String, String[]> map = ServletUtils.getRequest().getParameterMap(); Map<String, String[]> map = ServletUtils.getRequest().getParameterMap();
String params = JSONObject.toJSONString(map); String params = JSONObject.toJSONString(map);
operLog.setOperParam(StringUtils.substring(params, 0, 255)); operLog.setOperParam(StringUtils.substring(params, 0, 255));
@ -156,14 +150,12 @@ public class LogAspect
/** /**
* *
*/ */
private static Log getAnnotationLog(JoinPoint joinPoint) throws Exception private Log getAnnotationLog(JoinPoint joinPoint) throws Exception {
{
Signature signature = joinPoint.getSignature(); Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature; MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod(); Method method = methodSignature.getMethod();
if (method != null) if (method != null) {
{
return method.getAnnotation(Log.class); return method.getAnnotation(Log.class);
} }
return null; return null;

Loading…
Cancel
Save