فهرست منبع

优化访问日志配置

周浩 8 سال پیش
والد
کامیت
a1a8d44883

+ 85 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/AopAccessLoggerResolverAutoConfiguration.java

@@ -0,0 +1,85 @@
+package org.hsweb.web.controller;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.hsweb.web.bean.po.logger.LoggerInfo;
+import org.hsweb.web.bean.po.user.User;
+import org.hsweb.web.core.exception.BusinessException;
+import org.hsweb.web.core.logger.AccessLoggerPersisting;
+import org.hsweb.web.core.logger.AopAccessLoggerResolver;
+import org.hsweb.web.core.message.FastJsonHttpMessageConverter;
+import org.hsweb.web.core.message.ResponseMessage;
+import org.hsweb.web.core.utils.WebUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.hsweb.commons.StringUtils;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+
+/**
+ * Created by zhouhao on 16-4-28.
+ */
+@Configuration
+@ConditionalOnProperty(name = "logger.access", havingValue = "true")
+public class AopAccessLoggerResolverAutoConfiguration extends AopAccessLoggerResolver {
+    @Bean
+    public AopAccessLoggerResolverConfiguration aopAccessLoggerResolverConfiguration() {
+        return new AopAccessLoggerResolverConfiguration();
+    }
+    @Aspect
+    @Component
+    @Order(Ordered.HIGHEST_PRECEDENCE)
+    static class AopAccessLoggerResolverConfiguration extends org.hsweb.web.core.logger.AopAccessLoggerResolver {
+        @Autowired(required = false)
+        private FastJsonHttpMessageConverter fastJsonHttpMessageConverter;
+
+        @Autowired(required = false)
+        private List<AccessLoggerPersisting> accessLoggerPersisting;
+
+        @PostConstruct
+        private void init() {
+            if (fastJsonHttpMessageConverter == null)
+                fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
+        }
+
+        @Around(value = "execution(* org.hsweb.web..controller..*Controller..*(..))||@annotation(org.hsweb.web.core.logger.annotation.AccessLogger)")
+        public Object around(ProceedingJoinPoint pjp) throws Throwable {
+            LoggerInfo loggerInfo = resolver(pjp);
+            long requestTime = System.currentTimeMillis();
+            Object result = null;
+            try {
+                result = pjp.proceed();
+            } catch (Throwable e) {
+                if (!(e instanceof BusinessException)) {
+                    result = ResponseMessage.error(e.getMessage());
+                    loggerInfo.setExceptionInfo(StringUtils.throwable2String(e));
+                } else {
+                    result = ResponseMessage.error(e.getMessage(), ((BusinessException) e).getStatus());
+                }
+                throw e;
+            } finally {
+                long responseTime = System.currentTimeMillis();
+                User user = WebUtil.getLoginUser();
+                loggerInfo.setRequestTime(requestTime);
+                loggerInfo.setResponseTime(responseTime);
+                loggerInfo.setResponseContent(fastJsonHttpMessageConverter.converter(result));
+                if (user != null)
+                    loggerInfo.setUserId(user.getId());
+                if (result instanceof ResponseMessage)
+                    loggerInfo.setResponseCode(String.valueOf(((ResponseMessage) result).getCode()));
+                if (accessLoggerPersisting != null) {
+                    accessLoggerPersisting.forEach(loggerPersisting -> loggerPersisting.save(loggerInfo));
+                }
+            }
+            return result;
+        }
+    }
+
+}

+ 0 - 76
hsweb-web-controller/src/main/java/org/hsweb/web/controller/AopAccessLoggerResolverConfiguration.java

@@ -1,76 +0,0 @@
-package org.hsweb.web.controller;
-
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.hsweb.web.bean.po.logger.LoggerInfo;
-import org.hsweb.web.bean.po.user.User;
-import org.hsweb.web.core.exception.BusinessException;
-import org.hsweb.web.core.logger.AccessLoggerPersisting;
-import org.hsweb.web.core.logger.AopAccessLoggerResolver;
-import org.hsweb.web.core.message.FastJsonHttpMessageConverter;
-import org.hsweb.web.core.message.ResponseMessage;
-import org.hsweb.web.core.utils.WebUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.hsweb.commons.StringUtils;
-
-import javax.annotation.PostConstruct;
-import java.util.List;
-
-/**
- * Created by zhouhao on 16-4-28.
- */
-@Aspect
-@Component
-@Order(Ordered.HIGHEST_PRECEDENCE)
-@ConditionalOnProperty(prefix = "logger.access", value = "on")
-public class AopAccessLoggerResolverConfiguration extends AopAccessLoggerResolver {
-
-    @Autowired(required = false)
-    private FastJsonHttpMessageConverter fastJsonHttpMessageConverter;
-
-    @Autowired(required = false)
-    private List<AccessLoggerPersisting> accessLoggerPersisting;
-
-    @PostConstruct
-    private void init() {
-        if (fastJsonHttpMessageConverter == null)
-            fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
-    }
-
-    @Around(value = "execution(* org.hsweb.web..controller..*Controller..*(..))||@annotation(org.hsweb.web.core.logger.annotation.AccessLogger)")
-    public Object around(ProceedingJoinPoint pjp) throws Throwable {
-        LoggerInfo loggerInfo = resolver(pjp);
-        long requestTime = System.currentTimeMillis();
-        Object result = null;
-        try {
-            result = pjp.proceed();
-        } catch (Throwable e) {
-            if (!(e instanceof BusinessException)) {
-                result = ResponseMessage.error(e.getMessage());
-                loggerInfo.setExceptionInfo(StringUtils.throwable2String(e));
-            } else {
-                result = ResponseMessage.error(e.getMessage(), ((BusinessException) e).getStatus());
-            }
-            throw e;
-        } finally {
-            long responseTime = System.currentTimeMillis();
-            User user = WebUtil.getLoginUser();
-            loggerInfo.setRequestTime(requestTime);
-            loggerInfo.setResponseTime(responseTime);
-            loggerInfo.setResponseContent(fastJsonHttpMessageConverter.converter(result));
-            if (user != null)
-                loggerInfo.setUserId(user.getId());
-            if (result instanceof ResponseMessage)
-                loggerInfo.setResponseCode(String.valueOf(((ResponseMessage) result).getCode()));
-            if (accessLoggerPersisting != null) {
-                accessLoggerPersisting.forEach(loggerPersisting -> loggerPersisting.save(loggerInfo));
-            }
-        }
-        return result;
-    }
-}