Configuration
Router Config
Pass a zen.Config to zen.New to customize server behavior:
config := zen.DefaultConfig()
config.ReadTimeout = 10 * time.Second
config.WriteTimeout = 20 * time.Second
config.ShutdownTimeout = 10 * time.Second
r := zen.New(":8080", config)
Config Options
| Option | Default | Description |
|---|---|---|
ReadTimeout | 0 | Max duration for reading the entire request body (0 = stdlib default) |
WriteTimeout | 0 | Max duration for writing the response (0 = stdlib default) |
IdleTimeout | 0 | Max idle time for keep-alive connections (0 = stdlib default) |
ReadHeaderTimeout | 0 | Max duration for reading request headers (0 = stdlib default) |
MaxHeaderBytes | 0 | Maximum size of request headers (0 = stdlib default, no limit) |
ShutdownTimeout | 5s | Graceful shutdown timeout (Run blocks until done or timeout) |
Logger
Configure the structured logger level and output:
logger.SetLevel(logger.DEBUG)
l := logger.New(logger.DEBUG, os.Stdout)
logger.SetDefault(l)
Environment Variables
Type-safe environment parsing with defaults and required-value variants:
dbURL := env.GetString("DATABASE_URL", "postgres://localhost:5432")
port := env.GetInt("PORT", 8080)
debug := env.GetBool("DEBUG", false)
timeout := env.GetDuration("TIMEOUT", 30*time.Second)
// Panics if unset
dbURL := env.MustGetString("DATABASE_URL")