envoyproxy/gateway

logs: timestamp format regressed to Unix epoch float since v1.8.0

Closed

#9,492 opened on Jul 14, 2026

 (1 comment) (0 reactions) (0 assignees)Go (802 forks)auto 404
help wanted

Repository metrics

Stars
 (2,871 stars)
PR merge metrics
 (PR metrics pending)

Description

Description: Since v1.8.0, Envoy Gateway logs emit timestamps as Unix epoch floats (e.g. 1.7840510610168722e+09) instead of human-readable ISO 8601 strings (e.g. 2026-07-14T17:44:06.617Z). This makes logs difficult to read and breaks tooling that expects a standard timestamp format.

The regression was introduced by pr https://github.com/envoyproxy/gateway/pull/8555 ("feat: JSON log encoder uses abbreviated field keys"), which changed initZapLogger in internal/logging/log.go from zap.NewDevelopmentEncoderConfig() to zap.NewProductionEncoderConfig(). The production config uses zapcore.EpochTimeEncoder instead of zapcore.ISO8601TimeEncoder.

Expected behavior: timestamps are formatted as ISO 8601, matching the behavior of v1.7.x and earlier.

Repro steps: Run the envoy-gateway server via Docker and observe the log output:

# v1.7.x — correct
docker run --rm envoyproxy/gateway:v1.7.5 server 2>&1 | head -2

# v1.8.x — broken
docker run --rm envoyproxy/gateway:v1.8.2 server 2>&1 | head -2

Environment:

  • Envoy Gateway v1.8.0, v1.8.2 (affected)
  • Envoy Gateway v1.7.5 and earlier (not affected)

Logs: v1.7.5 (expected):

2026-07-14T17:44:41.384Z     INFO    cmd/server.go:139       No config file provided, using default parameters
2026-07-14T17:44:41.384Z     INFO    config-loader   loader/configloader.go:120      running hook

v1.8.2 (actual):

1.7840510610168722e+09       info    cmd/server.go:139       No config file provided, using default parameters
1.7840510610169678e+09       info    config-loader   loader/configloader.go:120      running hook

Suggested fix in internal/logging/log.go:

cfg := zap.NewProductionEncoderConfig()
cfg.EncodeTime = zapcore.ISO8601TimeEncoder

Contributor guide