Interface HttpLogHandler

All Known Implementing Classes:
Slf4jLogHandler

public interface HttpLogHandler

HTTP 日誌處理器介面

定義如何處理 HTTP 請求與回應的日誌,支援多種輸出方式:

  • 輸出到日誌系統(Slf4j)
  • 儲存到資料庫
  • 發送到訊息佇列
  • 寫入檔案

設計理念

  • 介面分離:請求日誌與回應日誌獨立處理
  • 彈性擴展:應用層可自訂實作
  • 非阻塞:建議實作時使用非同步處理避免影響效能

預設實作

使用範例

// 使用預設的 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 Details

    • handleRequest

      void handleRequest(HttpRequestLog log)

      處理 HTTP 請求日誌

      注意:此方法不應該拋出異常,否則會影響 HTTP 請求的執行

      Parameters:
      log - 請求日誌
    • handleResponse

      void handleResponse(HttpResponseLog log)

      處理 HTTP 回應日誌

      注意:此方法不應該拋出異常,否則會影響 HTTP 請求的執行

      Parameters:
      log - 回應日誌