Interface HttpLogHandler
- All Known Implementing Classes:
Slf4jLogHandler
public interface HttpLogHandler
HTTP 日誌處理器介面
定義如何處理 HTTP 請求與回應的日誌,支援多種輸出方式:
- 輸出到日誌系統(Slf4j)
- 儲存到資料庫
- 發送到訊息佇列
- 寫入檔案
設計理念
- 介面分離:請求日誌與回應日誌獨立處理
- 彈性擴展:應用層可自訂實作
- 非阻塞:建議實作時使用非同步處理避免影響效能
預設實作
Slf4jLogHandler- 輸出到 Slf4j Logger
使用範例
// 使用預設的 Slf4j 處理器
HttpLogHandler handler = new Slf4jLogHandler();
// 自訂資料庫處理器
public class DatabaseLogHandler implements HttpLogHandler {
@Override
public void handleRequest(HttpRequestLog log) {
auditLogRepository.save(toEntity(log));
}
@Override
public void handleResponse(HttpResponseLog log) {
auditLogRepository.updateResponse(log.getRequestId(), toEntity(log));
}
}
// 組合多個處理器
public class CompositeLogHandler implements HttpLogHandler {
private final List<HttpLogHandler> handlers;
@Override
public void handleRequest(HttpRequestLog log) {
handlers.forEach(h -> h.handleRequest(log));
}
@Override
public void handleResponse(HttpResponseLog log) {
handlers.forEach(h -> h.handleResponse(log));
}
}
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoid處理 HTTP 請求日誌void處理 HTTP 回應日誌
-
Method Details
-
handleRequest
處理 HTTP 請求日誌
注意:此方法不應該拋出異常,否則會影響 HTTP 請求的執行
- Parameters:
log- 請求日誌
-
handleResponse
處理 HTTP 回應日誌
注意:此方法不應該拋出異常,否則會影響 HTTP 請求的執行
- Parameters:
log- 回應日誌
-