Jelajahi Sumber

请求日志记录

zuy 2 tahun lalu
induk
melakukan
53ea5440bf

+ 29 - 0
common/src/main/java/com/kym/common/config/WebContextConfig.java

@@ -0,0 +1,29 @@
+package com.kym.common.config;
+
+import com.kym.common.filter.RequestLogFilter;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+
+
+
+
+
+
+
+
+@Configuration
+public class WebContextConfig {
+
+    @Bean
+    public FilterRegistrationBean<RequestLogFilter> addFilters() {
+        FilterRegistrationBean<RequestLogFilter> bean = new FilterRegistrationBean<>();
+        bean.setFilter(new RequestLogFilter());
+        bean.addUrlPatterns("/*");
+        bean.setName("request log filter");
+        bean.setOrder(0);
+        return bean;
+    }
+}

+ 80 - 0
common/src/main/java/com/kym/common/filter/RequestLogFilter.java

@@ -0,0 +1,80 @@
+package com.kym.common.filter;
+
+import cn.hutool.core.lang.UUID;
+import com.kym.common.utils.IPUtils;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+import java.io.IOException;
+
+
+
+
+
+
+
+
+
+
+/**
+ * 权限过滤器
+ *
+ * @author yaop
+ */
+public class RequestLogFilter implements Filter {
+
+    private Logger logger = LoggerFactory.getLogger(RequestLogFilter.class);
+
+    private String IP = "ip";
+    private String SEQ = "seq";
+
+
+    @Override
+    public void init(FilterConfig filterConfig) {
+        logger.info("RequestLogFilter init...");
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest) servletRequest;
+        HttpServletResponse response = (HttpServletResponse) servletResponse;
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        // 解决预请求(发送2次请求),此问题也可在 nginx 中作相似设置解决。
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+        response.setHeader("Access-Control-Max-Age", "3600");
+        //options请求是由浏览器发起确认是否访问可达,无数据传输
+        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
+            filterChain.doFilter(request, response);
+            return;
+        }
+        String ip = IPUtils.getIpAddr(request);
+        String seq = UUID.fastUUID().toString(true);
+        MDC.put(IP, ip);
+        MDC.put(SEQ, seq);
+
+        logger.info("request>>>uri:{}", request.getRequestURI());
+        try {
+            filterChain.doFilter(request, response);
+        } finally {
+            MDC.remove(IP);
+            MDC.remove(SEQ);
+        }
+    }
+
+
+    @Override
+    public void destroy() {
+        logger.info("RequestLogFilter destroy()...");
+    }
+
+}

+ 1 - 1
miniapp/src/main/java/com/kym/miniapp/controller/ChargerController.java

@@ -165,7 +165,7 @@ public class ChargerController {
      */
     @PostMapping("/check_charge_orders")
     EnResponse checkChargeOrders(@RequestBody JSONObject json) {
-        return new EnResponse(enNotifyService.handleCheckChargeOrders(json));
+        return new EnResponse(/*enNotifyService.handleCheckChargeOrders(json)*/);
     }
 
 

+ 8 - 2
miniapp/src/main/resources/logback-spring.xml

@@ -4,7 +4,7 @@
     <!--引用默认日志配置-->
     <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
     <!--使用默认的控制台日志输出实现-->
-    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
+<!--    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>-->
     <!--应用名称-->
     <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="springBoot"/>
     <!--日志文件保存路径-->
@@ -15,6 +15,12 @@
     <!--是否开启LogStash插件内部日志-->
     <!--    <springProperty name="ENABLE_INNER_LOG" scope="context" source="logstash.enableInnerLog" defaultValue="false"/>-->
 
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS}|%thread|%-5level|%logger{36}|%X{ip}|%X{seq}|%msg%n</pattern>
+        </encoder>
+    </appender>
+
     <!--DEBUG日志输出到文件-->
     <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!--输出DEBUG以上级别日志-->
@@ -177,7 +183,7 @@
 <!--    </appender>-->
 
     <!--控制框架输出日志-->
-    <logger name="org.slf4j" level="INFO"/>
+<!--    <logger name="org.slf4j" level="INFO"/>-->
     <logger name="springfox" level="INFO"/>
     <logger name="io.swagger" level="INFO"/>
     <logger name="org.springframework" level="INFO"/>