logs: timestamp format regressed to Unix epoch float since v1.8.0
#9,492 opened on Jul 14, 2026
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