1. Fix a nullpointer dereference bug caused by not cloning everything in (enc *guardianTelemetryEncoder) Clone()
2. Fix a bug that caused logs marked with _privateLogEntry to still be sent to telemetry because when a child logger is created (logger.With(zap.Bool("_privateLogEntry", true))) the extra fields will go into the encoder's buffer and will not be passed to EncodeEntry(entry zapcore.Entry, fields []zapcore.Field). This bug had no production impact because the telemetry logger was broken (see (1))
3. make the telemetry module testable and add unit tests
Co-authored-by: tbjump <>
Release Notes
New guardiand cli options:
--publicRpcLogDetail [string]
none -- no logging of gRPC requests at all
minimal -- only log gRPC methods
full (default) -- additionally log user-agent and gRPC request payload
--logPublicRpcToTelemetry [bool]
false do not send publicrpc logs to Google Cloud Logging
true (default) -- (current behavior)
Co-authored-by: tbjump <>
It appears that GCP Cloud Logging cannot handle the volume of logs
we're throwing at it... full text search slows to a crawl (LOL)
Reduce log level until we can move to something else.
commit-id:b71c3467