1
0
mirror of https://github.com/labstack/echo.git synced 2025-01-24 03:16:14 +02:00
echo/website/content/guide/customization.md

77 lines
1.6 KiB
Markdown
Raw Normal View History

---
title: Customization
menu:
side:
parent: guide
weight: 2
---
### HTTP error handler
`Echo#SetHTTPErrorHandler(h HTTPErrorHandler)`
Registers a custom `Echo#HTTPErrorHandler`.
Default handler rules:
- If error is of type `Echo#HTTPError` it sends HTTP response with status code `HTTPError.Code`
and message `HTTPError.Message`.
- Else it sends `500 - Internal Server Error`.
- If debug mode is enabled, it uses `error.Error()` as status message.
### Debug
`Echo#SetDebug(on bool)`
Enables/disables debug mode.
### Log output
`echo#SetOutput(w io.Writer)`
SetOutput sets the output destination for the global logger.
### Log level
`echo#SetLogLevel(l log.Level)`
SetLogLevel sets the log level for global logger. The default value is `log.INFO`.
### Auto index
`Echo#AutoIndex(on bool)`
AutoIndex enables automatically creates a directory listing if the directory doesn't
contain an index page.
*Example*
```go
e := echo.New()
e.AutoIndex(true)
e.ServerDir("/", "/Users/vr/Projects/echo")
e.Run(":1323")
```
Browse to `http://localhost:1323/` to see the directory listing.
### Hook
`Echo#Hook(http.HandlerFunc)`
Hook registers a callback which is invoked from `Echo#ServerHTTP` as the first
statement. Hook is useful if you want to modify response/response objects even
before it hits the router or any middleware.
For example, the following hook strips the trailing slash from the request path.
```go
e.Hook(func(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
l := len(path) - 1
if path != "/" && path[l] == '/' {
r.URL.Path = path[:l]
}
})
```