logbook 簡介
很多人可能沒有接觸過 logbook
,但它的確是一個很好用的日志框架。引用官網的介紹
Logbook 是一個可擴展的 Java 庫,可以為不同的客戶端和服務器端技術啟用完整的請求和響應日志記錄。它通過以下方式滿足了特殊需求:
- 允許 Web 應用程序開發人員記錄應用程序接收或發送的任何 HTTP 流量 ,這意味著只要是 HTTP 請求它都可以選擇記錄日志
- 以一種易于持久化和分析的方式。這對于傳統的日志分析、滿足審計要求或調查個別歷史流量問題非常有用。
具體介紹可以參考 鏈接: logbook 官網
使用logbook
這邊主要講解logbook
與springBoot2
的整合
logbook
官方提供了 logbook-spring-boot-starter
簡單使用
引入依賴
<!--按照官方要求 為了 Spring 5 / Spring Boot 2 向后兼容,需要導入如下依賴-->
<dependency><groupId>org.zalando</groupId><artifactId>logbook-servlet</artifactId><version>3.9.0</version><classifier>javax</classifier>
</dependency>
<dependency><groupId>org.zalando</groupId><artifactId>logbook-spring-boot-starter</artifactId><version>3.9.0</version>
</dependency>
添加配置
logging:level:org.zalando.logbook: TRACE
寫個測試接口就可以看到日志了
{"origin": "remote", //remote 代表遠程請求,local 代表本地發出的請求 例如 Feign"type": "request","correlation": "b2b2b8e449d7b650", //請求唯一id"protocol": "HTTP/1.1","remote": "0:0:0:0:0:0:0:1","method": "GET","uri": "http://localhost:8080/consumer","headers": {"accept": ["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"],"accept-encoding": ["gzip, deflate, br"],"accept-language": ["zh-CN,zh;q=0.9"],"cache-control": ["max-age=0"],"connection": ["keep-alive"],"host": ["localhost:8080"],//...省略}
}
選擇日志風格
logbook
提供了多種日志風格,默認是 JSON
,在 application.yml
中通過以下配置選擇
logbook:format:style: json #默認值,可選值還有 curl、http、splunk
轉載: 原文