Skip to main content

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

OptionDefaultDescription
ReadTimeout0Max duration for reading the entire request body (0 = stdlib default)
WriteTimeout0Max duration for writing the response (0 = stdlib default)
IdleTimeout0Max idle time for keep-alive connections (0 = stdlib default)
ReadHeaderTimeout0Max duration for reading request headers (0 = stdlib default)
MaxHeaderBytes0Maximum size of request headers (0 = stdlib default, no limit)
ShutdownTimeout5sGraceful 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")