Browse Source

增加日志

crazycat 2 years ago
parent
commit
99121545a7

+ 29 - 0
src/main/java/com/welampiot/configuration/WebConfig.java

@@ -0,0 +1,29 @@
+package com.welampiot.configuration;
+
+import com.welampiot.interceptor.Interceptor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+//    @Override
+//    public void addCorsMappings(CorsRegistry registry) {
+//        registry.addMapping("/**")  // 拦截所有的请求
+//                .allowedOriginPatterns("*")
+//                .allowCredentials(true)
+//                .allowedMethods("*")   // 允许跨域的方法,可以单独配置
+//                .allowedHeaders("*");  // 允许跨域的请求头,可以单独配置
+//    }
+
+    /**
+     * 重写addInterceptors()实现拦截器
+     * 配置:要拦截的路径以及不拦截的路径
+     *
+     * @param registry
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(new Interceptor()).addPathPatterns("/**");
+    }
+}

+ 4 - 3
src/main/java/com/welampiot/controller/DataController.java

@@ -5,9 +5,9 @@ import com.welampiot.dto.*;
 import com.welampiot.service.*;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.*;
-import org.apache.catalina.User;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -75,9 +75,11 @@ public class DataController {
         lampPoleCountVO.setSectionList(sectionList);
         data.setLampPoleCount(lampPoleService.getCountByVO(lampPoleCountVO));
 
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+        lampCountVO.setStartDate(simpleDateFormat.format(new Date()).toString());
         Float dayConsumptionByVO = lampService.getDayConsumptionByVO(lampCountVO);
         data.setDayConsumption((float) (Math.round(dayConsumptionByVO*100)/100f));
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-01 00:00:00");
+        simpleDateFormat = new SimpleDateFormat("yyyy-MM-01 00:00:00");
         // 当月
         lampCountVO.setStartDate(simpleDateFormat.format(new Date()).toString());
         Float monthConsumption = lampService.getConsumptionByVO(lampCountVO);
@@ -135,7 +137,6 @@ public class DataController {
         Integer type = request.getParameter("type") == null ? 0 : Integer.parseInt(request.getParameter("type"));
         Integer operaType = request.getParameter("operaType") == null ? 0 : Integer.parseInt(request.getParameter("operaType"));
         List sectionList = toolUtils.getSectionList(request);
-//        if (type == 0) return weResponse.response("0007",version);
         Integer userId = toolUtils.getUser().getId();
         Integer role = toolUtils.getUser().getRole();;
         ListResponseVO data = new ListResponseVO();

+ 46 - 0
src/main/java/com/welampiot/interceptor/Interceptor.java

@@ -0,0 +1,46 @@
+package com.welampiot.interceptor;
+
+import com.alibaba.fastjson.JSON;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.ws.RequestWrapper;
+import java.util.Map;
+
+public class Interceptor implements HandlerInterceptor {
+    /**
+     * 在请求处理之前进行调用(Controller方法调用之前)
+     */
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+
+        // 记录请求参数日志
+        if(request.getRequestURI().substring(0,4).equals("/api")){
+            Logger paramLog =  LoggerFactory.getLogger("param_log");
+            Map<String, String[]> parameterMap = request.getParameterMap();
+            paramLog.info(request.getRequestURI()+" ==request param== "+ JSON.toJSONString(parameterMap));
+        }
+        return true;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
+        ServletOutputStream outputStream = response.getOutputStream();
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+        byte[] content = new byte[1024];
+        //获取response的值
+//        String responseData = IOUtils.toString(content, "UTF-8");
+
+        System.out.println(content.toString());
+        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
+    }
+}

+ 11 - 11
src/main/java/com/welampiot/utils/ToolUtils.java

@@ -19,6 +19,8 @@ import org.eclipse.paho.client.mqttv3.MqttClient;
 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -142,17 +144,15 @@ public class ToolUtils {
         String msg;
         String code = resultEnum.getCode();
         if (version == 0){
-            msg = resultEnum.getMsgCn();
-//            msg = responseConfig.getMsgCN().containsKey(code) ? responseConfig.getMsgCN().get(code) : "";
-        } else if (version == 1) {
+            msg = resultEnum.getMsgCn();} else if (version == 1) {
             msg = resultEnum.getMsgEn();
-//            msg = responseConfig.getMsgEN().containsKey(code) ? responseConfig.getMsgEN().get(code) : "";
         }else {
             msg = resultEnum.getMsgRu();
-//            msg = responseConfig.getMsgRU().containsKey(code) ? responseConfig.getMsgRU().get(code) : "";
         }
-//        InterfaceResultEnum.LOGIN_ERROR.getCode();
-        return new BaseResult<>(code,msg,new Object());
+        BaseResult<Object> objectBaseResult = new BaseResult<>(code, msg, new Object());
+        Logger paramLog =  LoggerFactory.getLogger("param_log");
+        paramLog.info("reponse param== "+ JSON.toJSONString(objectBaseResult));
+        return objectBaseResult;
     }
 
     /**
@@ -167,15 +167,15 @@ public class ToolUtils {
         String code = resultEnum.getCode();
         if (version == 0){
             msg = resultEnum.getMsgCn();
-//            msg = responseConfig.getMsgCN().containsKey(code) ? responseConfig.getMsgCN().get(code) : "";
         } else if (version == 1) {
             msg = resultEnum.getMsgEn();
-//            msg = responseConfig.getMsgEN().containsKey(code) ? responseConfig.getMsgEN().get(code) : "";
         }else {
             msg = resultEnum.getMsgRu();
-//            msg = responseConfig.getMsgRU().containsKey(code) ? responseConfig.getMsgRU().get(code) : "";
         }
-        return new BaseResult<>(code,msg,obj);
+        BaseResult<Object> objectBaseResult = new BaseResult<>(code, msg, obj);
+        Logger paramLog =  LoggerFactory.getLogger("param_log");
+        paramLog.info("reponse param== "+ JSON.toJSONString(objectBaseResult));
+        return objectBaseResult;
     }
 
     /**

+ 35 - 0
src/main/resources/prod/logback.xml

@@ -39,12 +39,47 @@
             <maxFileSize>500MB</maxFileSize>
         </rollingPolicy>
     </appender>
+
+    <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/cisError.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>logs/error/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <maxFileSize>500MB</maxFileSize>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]:====== %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="PARAM_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/cisInfo.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>logs/his/info/%d{yyyyMM}/cis.-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <maxFileSize>500MB</maxFileSize>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]:====== %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
     <logger name="record" level="DEBUG" additivity="false">
         <!--<appender-ref ref="STDOUT"/>-->
         <appender-ref ref="LOG_FILE"/>
     </logger>
+    <logger name="param_log" level="INFO" additivity="false">
+        <appender-ref ref="PARAM_LOG"/>
+    </logger>
     <root level="INFO">
         <!--<appender-ref ref="STDOUT"/>-->
         <appender-ref ref="LOG_FILE"/>
     </root>
+    <root level="ERROR">
+        <appender-ref ref="ERROR_LOG"/>
+    </root>
+
 </configuration>

+ 41 - 0
src/main/resources/test/logback.xml

@@ -39,12 +39,53 @@
             <maxFileSize>500MB</maxFileSize>
         </rollingPolicy>
     </appender>
+
+    <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/cisError.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>logs/his/error/%d{yyyyMM}/cis.-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <maxFileSize>500MB</maxFileSize>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]:====== %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="PARAM_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/cisInfo.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>logs/his/info/%d{yyyyMM}/cis.-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <maxFileSize>500MB</maxFileSize>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d %-5level [%-18.18thread] - [%X{requestId:-SYSTEM}]:====== %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+
     <logger name="record" level="DEBUG" additivity="false">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="LOG_FILE"/>
     </logger>
+    <logger name="param_log" level="INFO" additivity="false">
+        <appender-ref ref="PARAM_LOG"/>
+    </logger>
     <root level="DEBUG">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="LOG_FILE"/>
     </root>
+    <root level="ERROR">
+        <appender-ref ref="ERROR_LOG"/>
+    </root>
 </configuration>