## 自定義
### Debug
可使用`Echo#Debug` 來開啟/關閉 debug 模式。Debug 模式下的日志級別是 **DEBUG**。
### 日志
日志默認使用 JSON 格式,可從通過修改標頭進行格式修改。
#### 日志標頭
`Echo#Logger.SetHeader(io.Writer)` 用于日志標頭的設置,默認值為:
```json
{"time":"${time_rfc3339_nano}","level":"${level}","prefix":"${prefix}","file":"${short_file}","line":"${line}"}
```
*示例*
```go
import "github.com/labstack/gommon/log"
/* ... */
if l, ok := e.Logger.(*log.Logger); ok {
l.SetHeader("${time_rfc3339} ${level}")
}
```
```bash
2018-05-08T20:30:06-07:00 INFO info
```
**可用標簽**
- `time_rfc3339`
- `time_rfc3339_nano`
- `level`
- `prefix`
- `long_file`
- `short_file`
- `line`
#### 日志輸出
`Echo#Logger.SetOutput(io.Writer)` 用于設置日志輸出的位置,默認是 `os.Stdout`。
若需禁用日志,可使用 `Echo#Logger.SetOutput(ioutil.Discard)` 或 `Echo#Logger.SetLevel(log.OFF)` 來完成。
#### 日志級別
`Echo#Logger.SetLevel(log.Lvl)` 用于設置日志級別,默認是 `ERROR`。可選值包括:
- `DEBUG`
- `INFO`
- `WARN`
- `ERROR`
- `OFF`
#### 自定義日志
Echo 的日志實現了 `echo.Logger` 接口,該接口允許使用 `Echo#Logger` 注冊自定義日志。
### 自定義 Server
使用`Echo#StartServer()` 進行自定義 Server 的啟動
*示例*
```go
s := &http.Server{
Addr: ":1323",
ReadTimeout: 20 * time.Minute,
WriteTimeout: 20 * time.Minute,
}
e.Logger.Fatal(e.StartServer(s))
```
### 啟動橫幅
使用 `Echo#HideBanner` 隱藏啟動橫幅。
### 自定義監聽器
使用 `Echo#*Listener` 啟動一個自定義的 listener。
*示例*
```go
l, err := net.Listen("tcp", ":1323")
if err != nil {
e.Logger.Fatal(l)
}
e.Listener = l
e.Logger.Fatal(e.Start(""))
```
### 禁用 HTTP/2
使用 `Echo#DisableHTTP2` 關閉 HTTP/2 協議。
### 讀取超時
使用 `Echo#*Server#ReadTimeout` 設置讀取請求的最大時間。
### 寫入超時
使用 `Echo#*Server#WriteTimeout` 設置寫入響應的最大時間。
### 驗證
使用 `Echo#Validator` 注冊一個驗證器,從而對請求負載執行數據驗證。
[查看更多](https://echo.labstack.com/guide/request#validate-data)
### 自定義綁定
使用 `Echo#Binder` 注冊一個綁定器,從而綁定請求負載。
[查看更多](https://echo.labstack.com/guide/request/#custom-binder)
### 渲染
使用 `Echo#Renderer` 注冊一個渲染引擎,從而進行模板渲染。
### HTTP 錯誤處理
使用 `Echo#HTTPErrorHandler` 注冊一個 http 錯誤處理器。
[查看更多](https://echo.labstack.com/guide/error-handling)