## 訪問日志
### 配置
訪問日志是[HTTP連接管理器](../Configurationreference/HTTPconnectionmanager.md)或[TCP代理配置](../Configurationreference/Networkfilters/TCPproxy.md)的一部分。
- [v1 API 參考](../v1APIreference/Accesslogging.md)
- [v2 API 參考](../v2APIreference/Filters/Commonaccesslogtypes.md)
### 格式規則
訪問日志格式字符串包含命令操作符或解釋為普通字符串的其他字符。訪問日志格式化程序不會做任何換行分隔符(如:“\n”),因此必須將其指定為格式字符串的一部分。請參閱示例的[默認格式](#默認格式)。請注意,訪問日志行將為每個未設置/空值包含一個“-”字符。
訪問日志的有些字段使用相同的格式字符串(如:HTTP和TCP)。有些字段的含義可能略有不同,具體取決于它是什么類型的日志。注意差異。
支持以下命令操作符:
- **%START_TIME%**<br />
**HTTP**<br />
請求開始時間,包括毫秒<br />
**TCP**<br />
下游連接開始時間,包括毫秒
- **%BYTES_RECEIVED%**<br />
**HTTP**<br />
收到主體字節<br />
**TCP**<br />
下行流連接時收到的字節
- **%PROTOCOL%**<br />
**HTTP**<br />
協議,目前是HTTP/1.1或HTTP/2<br />
**TCP**<br />
未實現 (”-”)
- **%RESPONSE_CODE%**<br />
**HTTP**<br />
HTTP響應代碼。請注意,響應代碼“0”表示服務器從未發送響應的開始。這通常意味著(下游)客戶端連接斷開了。<br />
**TCP**<br />
未實現 (”-”)
- **%BYTES_SENT%**<br />
**HTTP**<br />
正文發送的字節<br />
**TCP**<br />
在連接上發送到下行流字節
- **%DURATION%**<br />
**HTTP**<br />
請求從開始時間到最后一個字節輸出的總持續時間(以毫秒為單位)<br />
**TCP**<br />
下游連接的總持續時間(以毫秒為單位)
- **%RESPONSE_FLAGS%**
有關響應或連接的其他詳細信息(如果有)。對于TCP連接,說明中提到的響應碼不適用。可能的值是:<br />
**HTTP and TCP**
UH:除503響應碼外,上游群集中沒有健康的上游主機
UF:除503響應代碼外,上游連接失敗
UO:除503響應碼外,上行溢出(斷路)
NR:除404響應碼外,沒有為的請求配置可用路由
**HTTP only**
LH:除503響應碼之外,本地服務失敗的健康檢查請求
UT:除了504響應代碼之外,上游請求超時
LR:除503響應碼外,連接本地復位
UR:除503響應碼外,還有上行遠程復位
UC:除503響應碼之外的上游連接終止
DI:請求處理延遲了故障注入指定的時間
FI:請求被中止,并通過故障注入指定響應代碼
RL:該請求除了429響應代碼之外,還由HTTP速率限制過濾器進行本地速率限制
- **%UPSTREAM_HOST%**<br />
上游主機URL(例如:TCP連接或者tcp://ip:port)
- **%UPSTREAM_CLUSTER%**<br />
上游主機所屬的上游集群
- **%UPSTREAM_LOCAL_ADDRESS%**<br />
上游連接的本地地址
- **%DOWNSTREAM_ADDRESS%**<br />
下游連接的遠端地址
- **%REQ(X?Y):Z%**<br />
**HTTP**<br />
一個HTTP請求頭部,其中X是主HTTP頭部,Y是替代頭部,而Z是一個可選參數,表示截取長度為Z個字符的字符串。該值取自名為X的HTTP請求頭部,如果未設置,則使用請求頭部Y. 如果不存在,則使用“-”符號替代<br />
**TCP**<br />
未實現 (”-”)
- **%RESP(X?Y):Z%**<br />
**HTTP**<br />
與`%REQ(X?Y):Z%`相同,但是來自HTTP響應頭<br />
**TCP**<br />
未實現 (”-”)
### 默認格式
如果未指定自定義格式,Envoy將使用以下默認格式:
```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n
```
默認訪問日志格式的示例:
```
[2016-04-15T20:17:00.310Z] "POST /api/v1/locations HTTP/2" 204 - 154 0 226 100 "10.0.35.28"
"nsq2http" "cc21d9b0-cf5c-432b-8c7e-98aeb7988cd2" "locations" "tcp://10.0.2.1:80"
```
## 返回
- [上一級](../Configurationreference.md)
- [首頁目錄](../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?