From 936dd65f69e1c9b17ed8abd4edf4c624cee68e23 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期日, 10 五月 2026 00:28:43 +0800
Subject: [PATCH] 日志优化

---
 rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/admin/HttpAuditRuleAdminController.java |    6 ---
 rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/props/HttpAuditProperties.java          |    4 +-
 rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/entity/HttpAuditRule.java               |    2 
 rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/service/HttpAuditRuleServiceImpl.java   |   52 +++++--------------------
 4 files changed, 14 insertions(+), 50 deletions(-)

diff --git a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/admin/HttpAuditRuleAdminController.java b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/admin/HttpAuditRuleAdminController.java
index b0e3502..4f29154 100644
--- a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/admin/HttpAuditRuleAdminController.java
+++ b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/admin/HttpAuditRuleAdminController.java
@@ -140,12 +140,6 @@
         if (StringUtils.isBlank(rule.getMatchMode())) {
             rule.setMatchMode(HttpAuditRule.MODE_EQUAL);
         }
-        if (StringUtils.isBlank(rule.getPattern())) {
-            rule.setPattern("*");
-        }
-        if (StringUtils.isBlank(rule.getDirection())) {
-            rule.setDirection(HttpAuditRule.DIR_BOTH);
-        }
     }
 
     private static R validate(HttpAuditRule rule) {
diff --git a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/entity/HttpAuditRule.java b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/entity/HttpAuditRule.java
index ee8e30d..3042153 100644
--- a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/entity/HttpAuditRule.java
+++ b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/entity/HttpAuditRule.java
@@ -11,7 +11,7 @@
 import java.util.Date;
 
 /**
- * HTTP 瀹¤鐧藉悕鍗曡鍒欙紙浠呭懡涓鍒欐椂鎵嶅啓瀹¤鏃ュ織锛屽彈 http-audit.whitelist-only 鎺у埗锛�
+ * HTTP 瀹¤鐧藉悕鍗曡鍒欙紙whitelist-only=true 鏃朵粎鍛戒腑鎵嶈惤搴擄紱record_all=1 浠呭湪璇ユ潯鍛戒腑鏃跺鏈潯璇锋眰/鍝嶅簲鎴柇鐢熸晥锛�
  */
 @Data
 @Accessors(chain = true)
diff --git a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/props/HttpAuditProperties.java b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/props/HttpAuditProperties.java
index 3213b25..912ee46 100644
--- a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/props/HttpAuditProperties.java
+++ b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/props/HttpAuditProperties.java
@@ -27,7 +27,7 @@
     private String simpleUiToken = "";
 
     /**
-     * true锛氬叆绔�/鍑虹珯鏄惁钀藉簱鐢� {@code sys_http_audit_rule} 鍐冲畾锛堝惈 record_all=1 鍏ㄩ噺銆佹柟鍚� IN/OUT/BOTH銆佹埅鏂暱搴︼級锛沠alse锛氭帓闄よ矾寰勫鍏ョ珯涓庡叏閮ㄥ嚭绔欏潎璁板綍锛屾埅鏂敤鏈厤缃� + 瑙勫垯涓�屽叏閲忋�嶈鐨� request/response_max_chars锛堣嫢鏈夛級
+     * true锛氬叆绔�/鍑虹珯鏄惁钀藉簱鐢� {@code sys_http_audit_rule} 鍖归厤鍐冲畾锛坮ecord_all 浠呭奖鍝嶅懡涓潯鐨勬埅鏂紱鏂瑰悜 IN/OUT/BOTH锛夛紱false锛氭帓闄よ矾寰勫鍏ョ珯涓庡叏閮ㄥ嚭绔欏潎璁板綍锛屾埅鏂敤鏈厤缃粯璁ゅ瓧娈�
      */
     private boolean whitelistOnly = true;
 
@@ -60,7 +60,7 @@
     private List<String> excludePathPrefixes = defaultExcludes();
 
     /**
-     * true锛氶粯璁ゆ帓闄や腑鐨� /httpAuditLog銆�/httpAuditRule 浠嶇敓鏁堬紱false锛氫笉鍐嶆帓闄よ繖涓ら」锛堜究浜庤皟璇曪紱record_all 涔熸棤娉曠粫杩� true 鏃剁殑鎺掗櫎锛�
+     * true锛氶粯璁ゆ帓闄や腑鐨� /httpAuditLog銆�/httpAuditRule 浠嶇敓鏁堬紱false锛氫笉鍐嶆帓闄よ繖涓ら」锛堜究浜庤皟璇曪紱鍛戒腑瑙勫垯涔熸棤娉曠粫杩� true 鏃剁殑鎺掗櫎锛�
      */
     private boolean excludeAuditSelfPaths = true;
 
diff --git a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/service/HttpAuditRuleServiceImpl.java b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/service/HttpAuditRuleServiceImpl.java
index 6fb558a..9f2b3d7 100644
--- a/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/service/HttpAuditRuleServiceImpl.java
+++ b/rsf-http-audit/src/main/java/com/vincent/rsf/httpaudit/service/HttpAuditRuleServiceImpl.java
@@ -18,7 +18,7 @@
 import java.util.regex.Pattern;
 
 /**
- * 瑙勫垯缂撳瓨锛涘叆绔�/鍑虹珯鎴栧叧绯伙紱record_all 鏃剁櫧鍚嶅崟涓嬩篃鍏ㄨ
+ * 瑙勫垯缂撳瓨锛涘叆绔�/鍑虹珯鎴栧叧绯伙紱record_all 浠呭湪璇ユ潯瑙勫垯鍛戒腑鏃跺鏈潯鏃ュ織鐢熸晥锛堥粯璁� -1 涓嶆埅鏂級
  */
 @Slf4j
 public class HttpAuditRuleServiceImpl extends ServiceImpl<HttpAuditRuleMapper, HttpAuditRule> implements HttpAuditRuleService {
@@ -68,28 +68,21 @@
     @Override
     public HttpAuditDecision decideInbound(HttpServletRequest request, String requestBody) {
         if (!props.isWhitelistOnly()) {
-            return HttpAuditDecision.yes(reqLimitFromRecordAllRow(), resLimitFromRecordAllRow());
+            return HttpAuditDecision.yes(null, null);
         }
         if (cache.isEmpty()) {
             return HttpAuditDecision.SKIP;
-        }
-        HttpAuditRule allRow = firstRecordAllRule();
-        if (allRow != null) {
-            return HttpAuditDecision.yes(allRow.getRequestMaxChars(), allRow.getResponseMaxChars());
         }
         String path = HttpAuditSupport.safePath(request);
         String ip = HttpAuditSupport.clientIp(request);
         String body = requestBody == null ? "" : requestBody;
         for (HttpAuditRule r : cache) {
-            if (isRecordAll(r)) {
-                continue;
-            }
             if (!appliesInbound(r)) {
                 continue;
             }
             try {
                 if (matchInbound(r, path, ip, body)) {
-                    return HttpAuditDecision.yes(r.getRequestMaxChars(), r.getResponseMaxChars());
+                    return decisionForMatchedRule(r);
                 }
             } catch (Exception e) {
                 log.debug("http-audit 瑙勫垯 id={} 鍖归厤寮傚父锛歿}", r.getId(), e.getMessage());
@@ -101,26 +94,19 @@
     @Override
     public HttpAuditDecision decideOutbound(String fullUrl, String method, String requestBody) {
         if (!props.isWhitelistOnly()) {
-            return HttpAuditDecision.yes(reqLimitFromRecordAllRow(), resLimitFromRecordAllRow());
+            return HttpAuditDecision.yes(null, null);
         }
         if (cache.isEmpty()) {
             return HttpAuditDecision.SKIP;
         }
-        HttpAuditRule allRow = firstRecordAllRule();
-        if (allRow != null) {
-            return HttpAuditDecision.yes(allRow.getRequestMaxChars(), allRow.getResponseMaxChars());
-        }
         String body = requestBody == null ? "" : requestBody;
         for (HttpAuditRule r : cache) {
-            if (isRecordAll(r)) {
-                continue;
-            }
             if (!appliesOutbound(r)) {
                 continue;
             }
             try {
                 if (matchOutbound(r, fullUrl, body)) {
-                    return HttpAuditDecision.yes(r.getRequestMaxChars(), r.getResponseMaxChars());
+                    return decisionForMatchedRule(r);
                 }
             } catch (Exception e) {
                 log.debug("http-audit 鍑虹珯瑙勫垯 id={} 鍖归厤寮傚父锛歿}", r.getId(), e.getMessage());
@@ -129,23 +115,13 @@
         return HttpAuditDecision.SKIP;
     }
 
-    private Integer reqLimitFromRecordAllRow() {
-        HttpAuditRule row = firstRecordAllRule();
-        return row == null ? null : row.getRequestMaxChars();
-    }
-
-    private Integer resLimitFromRecordAllRow() {
-        HttpAuditRule row = firstRecordAllRule();
-        return row == null ? null : row.getResponseMaxChars();
-    }
-
-    private HttpAuditRule firstRecordAllRule() {
-        for (HttpAuditRule r : cache) {
-            if (isRecordAll(r)) {
-                return r;
-            }
+    private static HttpAuditDecision decisionForMatchedRule(HttpAuditRule r) {
+        if (isRecordAll(r)) {
+            Integer req = r.getRequestMaxChars() != null ? r.getRequestMaxChars() : -1;
+            Integer res = r.getResponseMaxChars() != null ? r.getResponseMaxChars() : -1;
+            return HttpAuditDecision.yes(req, res);
         }
-        return null;
+        return HttpAuditDecision.yes(r.getRequestMaxChars(), r.getResponseMaxChars());
     }
 
     private static boolean isRecordAll(HttpAuditRule r) {
@@ -161,17 +137,11 @@
     }
 
     private static boolean appliesInbound(HttpAuditRule r) {
-        if (isRecordAll(r)) {
-            return false;
-        }
         String d = dir(r);
         return HttpAuditRule.DIR_IN.equals(d) || HttpAuditRule.DIR_BOTH.equals(d);
     }
 
     private static boolean appliesOutbound(HttpAuditRule r) {
-        if (isRecordAll(r)) {
-            return false;
-        }
         String d = dir(r);
         return HttpAuditRule.DIR_OUT.equals(d) || HttpAuditRule.DIR_BOTH.equals(d);
     }

--
Gitblit v1.9.1