Class LoggingInterceptor
java.lang.Object
io.leandev.appfuse.http.logging.LoggingInterceptor
- All Implemented Interfaces:
HttpClientInterceptor
日誌攔截器
預設的 HTTP 日誌攔截器實作,提供完整的請求/回應日誌記錄功能。
記錄內容
- 請求資訊:方法、URL、標頭、Body、認證狀態、閘道資訊
- 回應資訊:狀態碼、標頭、Body、耗時、重試次數
- 錯誤資訊:異常類型、錯誤訊息、Stack Trace
敏感資訊保護
自動遮罩敏感資訊(透過 SensitiveDataMasker):
- Authorization 標頭
- Cookie 標頭
- API Key 標頭
- JSON Body 中的 password, secret, token 欄位
使用範例
// 使用預設配置(輸出到 Slf4j)
StandardHttpClient client = StandardHttpClient.builder()
.withInterceptor(new LoggingInterceptor())
.build();
// 自訂日誌處理器
HttpLogHandler handler = new DatabaseLogHandler();
StandardHttpClient client = StandardHttpClient.builder()
.withInterceptor(new LoggingInterceptor(handler))
.build();
// 自訂配置
LoggingInterceptor interceptor = LoggingInterceptor.builder()
.logHandler(handler)
.includeRequestBody(true)
.includeResponseBody(true)
.includeStackTrace(false)
.masker(customMasker)
.build();
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class日誌攔截器建構器 -
Constructor Summary
ConstructorsConstructorDescription建立日誌攔截器(使用預設配置)LoggingInterceptor(HttpLogHandler logHandler) 建立日誌攔截器LoggingInterceptor(HttpLogHandler logHandler, SensitiveDataMasker masker, boolean includeRequestBody, boolean includeResponseBody, boolean includeStackTrace) 建立日誌攔截器 -
Method Summary
Modifier and TypeMethodDescriptionvoidafterResponse(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request, org.apache.hc.core5.http.ClassicHttpResponse response) 請求執行後的攔截點voidbeforeRequest(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request) 請求執行前的攔截點builder()建立日誌攔截器建構器voidonError(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request, Throwable error) 錯誤發生時的攔截點
-
Constructor Details
-
LoggingInterceptor
public LoggingInterceptor()建立日誌攔截器(使用預設配置)
預設配置:
- 使用 Slf4jLogHandler
- 不包含請求 Body
- 不包含回應 Body
- 不包含 Stack Trace
-
LoggingInterceptor
-
LoggingInterceptor
public LoggingInterceptor(HttpLogHandler logHandler, SensitiveDataMasker masker, boolean includeRequestBody, boolean includeResponseBody, boolean includeStackTrace) 建立日誌攔截器- Parameters:
logHandler- 日誌處理器masker- 敏感資訊遮罩工具includeRequestBody- 是否包含請求 BodyincludeResponseBody- 是否包含回應 BodyincludeStackTrace- 是否包含 Stack Trace
-
-
Method Details
-
beforeRequest
public void beforeRequest(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request) Description copied from interface:HttpClientInterceptor請求執行前的攔截點
在此方法中可以:
- 記錄請求資訊
- 修改請求標頭或參數
- 記錄開始時間(用於計算耗時)
- Specified by:
beforeRequestin interfaceHttpClientInterceptor- Parameters:
context- 攔截器上下文,可用於在不同攔截點之間傳遞資料request- HTTP 請求物件
-
afterResponse
public void afterResponse(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request, org.apache.hc.core5.http.ClassicHttpResponse response) Description copied from interface:HttpClientInterceptor請求執行後的攔截點
在此方法中可以:
- 記錄回應資訊
- 計算請求耗時
- 檢查回應狀態
- Specified by:
afterResponsein interfaceHttpClientInterceptor- Parameters:
context- 攔截器上下文request- HTTP 請求物件response- HTTP 回應物件
-
onError
public void onError(InterceptorContext context, org.apache.hc.core5.http.ClassicHttpRequest request, Throwable error) Description copied from interface:HttpClientInterceptor錯誤發生時的攔截點
在此方法中可以:
- 記錄錯誤資訊
- 記錄 Stack Trace
- 觸發告警通知
注意:此方法不應該拋出異常,否則會覆蓋原始錯誤
- Specified by:
onErrorin interfaceHttpClientInterceptor- Parameters:
context- 攔截器上下文request- HTTP 請求物件error- 發生的錯誤
-
builder
建立日誌攔截器建構器
-