golang-echo-zap
- Repo stars 0
- Author repo skills-registry
golang-echo-zap
Use this skill when adding or configuring github.com/adlandh/echo-zap-middleware/v2 in a Go Echo service.
Use When
- The user wants Zap request logging in an Echo app.
- Code imports
github.com/adlandh/echo-zap-middleware/v2or needs this middleware configured. - The task mentions
ZapConfig,Middleware,MiddlewareWithContextLogger,BodySkipper, request/response body logging, or Echo request IDs.
Key Facts
- This middleware targets
github.com/labstack/echo/v5; do not mix it with Echo v4 imports. - Echo v5 handlers and skippers use
*echo.Context, notecho.Context. - Import path is
github.com/adlandh/echo-zap-middleware/v2; package name isechozapmiddlewareunless aliased. Middleware(logger, config...)is the normal entrypoint for a*zap.Logger.MiddlewareWithContextLogger(ctxLogger, config...)is forgithub.com/adlandh/context-loggerextractors.ZapConfigfills defaults only for nilSkipperand nilBodySkipper; bool and int zero values are meaningful.LimitHTTPBody: truewithLimitSize <= 0disables body limiting.BodySkipperdoes not prevent body capture; it replaces non-empty logged bodies with[excluded].- Request IDs are logged from request
X-Request-Idfirst, then from Echo's response header.
Minimal Setup
import (
echozapmiddleware "github.com/adlandh/echo-zap-middleware/v2"
"github.com/labstack/echo/v5"
"github.com/labstack/echo/v5/middleware"
"go.uber.org/zap"
)
logger, err := zap.NewProduction()
if err != nil {
return err
}
e := echo.New()
e.Use(middleware.RequestID())
e.Use(echozapmiddleware.Middleware(logger))
Body And Header Logging
e.Use(echozapmiddleware.Middleware(logger, echozapmiddleware.ZapConfig{
AreHeadersDump: true,
IsBodyDump: true,
LimitHTTPBody: true,
LimitSize: 500,
Skipper: func(c *echo.Context) bool {
return c.Path() == "/health"
},
BodySkipper: func(c *echo.Context) (skipReqBody, skipRespBody bool) {
if c.Path() == "/upload" {
return true, false
}
if c.Request().Header.Get("Content-Encoding") == "gzip" {
return true, true
}
return false, false
},
}))
Context Logger Setup
import contextlogger "github.com/adlandh/context-logger"
ctxLogger := contextlogger.WithContext(logger)
e.Use(echozapmiddleware.MiddlewareWithContextLogger(ctxLogger))
Implementation Guidance
- Add
middleware.RequestID()before this middleware when generated request IDs should appear in logs. - Keep body dumping off by default for hot paths; enable
IsBodyDumponly when the service can afford body capture. - Use
BodySkipperfor sensitive or binary payloads, but still setLimitHTTPBodyandLimitSizefor large bodies. - If changing middleware behavior in this repo, preserve downstream request body replay after capture and update README configuration docs.
Verify
- In this repo, run
go test ./...for a fast check. - For body limit changes, run
go test -run TestLimitBody ./...andgo test -run 'TestMiddleware/TestBodyLimitApplied' ./.... - CI uses
go test -race -coverprofile=coverage.txt -covermode=atomic ./....
<!-- tomevault:4.0:skill_md:2026-05-23 -->Source: adlandh/echo-zap-middleware — distributed by TomeVault.
- Fluxly category
- Engineering
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @tomevault-io · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Plug-and-play
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. The user wants Zap request logging in an Echo app. Code imports github.com/adlandh/echo-zap-middleware/v2 or needs this middleware configured. The task mentions ZapConfig, Middleware, MiddlewareWithContextLogger, BodySkipper, request/response body logging, or…
This middleware targets github.com/labstack/echo/v5; do not mix it with Echo v4 imports. Echo v5 handlers and skippers use echo.Context, not echo.Context. Import path is github.com/adlandh/echo-zap-middleware/v2; package name is echozapmiddleware unless…
Minimal Setup
Body And Header Logging
Context Logger Setup
Add middleware.RequestID() before this middleware when generated request IDs should appear in logs. Keep body dumping off by default for hot paths; enable IsBodyDump only when the service can afford body capture. Use BodySkipper for sensitive or binary…
# golang-echo-zap
Use this skill when adding or configuring `github.com/adlandh/echo-zap-middleware/v2` in a Go Echo service.
## Use When
- The user wants Zap request logging in an Echo app.
- Code imports `github.com/adlandh/echo-zap-middleware/v2` or needs this middleware configured.
- The task mentions `ZapConfig`, `Middleware`, `MiddlewareWithContextLogger`, `BodySkipper`, request/response body logging, or Echo request IDs.
## Key Facts
- This middleware targets `github.com/labstack/echo/v5`; do not mix it with Echo v4 imports.
- Echo v5 handlers and skippers use `*echo.Context`, not `echo.Context`.
- Import path is `github.com/adlandh/echo-zap-middleware/v2`; package name is `echozapmiddleware` unless aliased.
- `Middleware(logger, config...)` is the normal entrypoint for a `*zap.Logger`.
- `MiddlewareWithContextLogger(ctxLogger, config...)` is for `github.com/adlandh/context-logger` extractors.
- `ZapConfig` fills defaults only for nil `Skipper` and nil `BodySkipper`; bool and int zero values are meaningful.
- `LimitHTTPBody: true` with `LimitSize <= 0` disables body limiting.
- `BodySkipper` does not prevent body capture; it replaces non-empty logged bodies with `[excluded]`.
- Request IDs are logged from request `X-Request-Id` first, then from Echo's response header.
## Minimal Setup
```go
import (
echozapmiddleware "github.com/adlandh/echo-zap-middleware/v2"
"github.com/labstack/echo/v5"
"github.com/labstack/echo/v5/middleware"
"go.uber.org/zap"
)
logger, err := zap.NewProduction()
if err != nil {
return err
}
e := echo.New()
e.Use(middleware.RequestID())
e.Use(echozapmiddleware.Middleware(logger))
```
## Body And Header Logging
```go
e.Use(echozapmiddleware.Middleware(logger, echozapmiddleware.ZapConfig{
AreHeadersDump: true,
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Use When → Key Facts → Minimal Setup → Body And Header Logging → Context Logger Setup → Implementation Guidance
terms -> Use this skill when adding or configuring github.com/adlandh/echo-zap-middleware/v2 in a Go Echo service.
files/cmd -> github.com/adlandh/echo-zap-middleware/v2 · ZapConfig · Middleware · MiddlewareWithContextLogger · BodySkipper · github.com/labstack/echo/v5 · echo.Context · echozapmiddleware
body sha256 -> 8cf4ee3b3821
Decide Fit First
Design Intent
How To Use It
Boundaries And Review