From 7893369a0a7903206d191f385b74e88a5381704f Mon Sep 17 00:00:00 2001 From: Miran Hamid Date: Tue, 7 Apr 2026 12:37:04 +0530 Subject: [PATCH 1/2] feat: Add option to disable logging via environment variable Add DISABLE_LOGGING environment variable to control whether logs are output. When set to 'true', logging is disabled; otherwise logging is enabled (default). Changes: - Add Enabled() method to ILogger interface - Add enabled field to ZeroLog struct - Add Enabled() implementation to both NoOpLogger and ZeroLog - Update logging methods in ZeroLog to check enabled flag - Check DISABLE_LOGGING env var in NewZeroLogger() Fixes #31 --- lib/logger/logger.go | 1 + lib/logger/no-op.go | 4 ++++ service/utils/zerolog.go | 29 +++++++++++++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/logger/logger.go b/lib/logger/logger.go index ae03017..53815ec 100644 --- a/lib/logger/logger.go +++ b/lib/logger/logger.go @@ -26,6 +26,7 @@ type ILogger interface { Warn(ctx context.Context, msg string, fields Fields) Error(ctx context.Context, msg string, err error, fields Fields) Debug(ctx context.Context, msg string, fields Fields) + Enabled() bool } func Initialize(loggerInstance ILogger) { diff --git a/lib/logger/no-op.go b/lib/logger/no-op.go index d521480..abc958d 100644 --- a/lib/logger/no-op.go +++ b/lib/logger/no-op.go @@ -21,3 +21,7 @@ func (n NoOpLogger) Warn(ctx context.Context, msg string, fields Fields) {} func (n NoOpLogger) Error(ctx context.Context, msg string, err error, fields Fields) {} func (n NoOpLogger) Debug(ctx context.Context, msg string, fields Fields) {} + +func (n NoOpLogger) Enabled() bool { + return false +} diff --git a/service/utils/zerolog.go b/service/utils/zerolog.go index ef5ed9e..44bbbe0 100644 --- a/service/utils/zerolog.go +++ b/service/utils/zerolog.go @@ -11,7 +11,8 @@ import ( ) type ZeroLog struct { - logger zerolog.Logger + logger zerolog.Logger + enabled bool } var ( @@ -26,8 +27,12 @@ func NewZeroLogger() ZeroLog { zerolog.SetGlobalLevel(zerolog.DebugLevel) + // Check if logging is disabled via environment variable + enabled := os.Getenv("DISABLE_LOGGING") != "true" + zeroLog := ZeroLog{ - logger: log.Logger, + logger: log.Logger, + enabled: enabled, } Logger = zeroLog @@ -44,17 +49,29 @@ func addFields(event *zerolog.Event, fields map[string]any) *zerolog.Event { } func (l ZeroLog) Info(ctx context.Context, msg string, fields customLogger.Fields) { - addFields(l.logger.Info(), fields).Msg(msg) + if l.enabled { + addFields(l.logger.Info(), fields).Msg(msg) + } } func (l ZeroLog) Warn(ctx context.Context, msg string, fields customLogger.Fields) { - addFields(l.logger.Warn(), fields).Msg(msg) + if l.enabled { + addFields(l.logger.Warn(), fields).Msg(msg) + } } func (l ZeroLog) Error(ctx context.Context, msg string, err error, fields customLogger.Fields) { - addFields(l.logger.Err(err), fields).Msg(msg) + if l.enabled { + addFields(l.logger.Err(err), fields).Msg(msg) + } } func (l ZeroLog) Debug(ctx context.Context, msg string, fields customLogger.Fields) { - addFields(l.logger.Debug(), fields).Msg(msg) + if l.enabled { + addFields(l.logger.Debug(), fields).Msg(msg) + } +} + +func (l ZeroLog) Enabled() bool { + return l.enabled } From b4ff6e5f6968c5ac5900b9a843d0ecef005934f0 Mon Sep 17 00:00:00 2001 From: Miran Hamid Date: Mon, 27 Apr 2026 14:26:13 +0530 Subject: [PATCH 2/2] chore: address PR feedback - polish logging feature - Rename DISABLE_LOGGING to ESPRESSO_LOG_ENABLED (positive flag) - Add logIfEnabled helper to reduce repeated if checks - Add doc comments explaining Enabled() usage pattern - Add note about env var being read once at init time - BREAKING: ILogger interface now requires Enabled() method --- lib/logger/logger.go | 7 +++++++ service/utils/zerolog.go | 27 +++++++++++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/logger/logger.go b/lib/logger/logger.go index 53815ec..234d352 100644 --- a/lib/logger/logger.go +++ b/lib/logger/logger.go @@ -26,6 +26,13 @@ type ILogger interface { Warn(ctx context.Context, msg string, fields Fields) Error(ctx context.Context, msg string, err error, fields Fields) Debug(ctx context.Context, msg string, fields Fields) + + // Enabled reports whether logging is active. + // Use to short-circuit expensive log-arg construction: + // + // if logger.Enabled() { + // logger.Info(ctx, expensiveFunc(), fields) + // } Enabled() bool } diff --git a/service/utils/zerolog.go b/service/utils/zerolog.go index 44bbbe0..315da3d 100644 --- a/service/utils/zerolog.go +++ b/service/utils/zerolog.go @@ -27,8 +27,9 @@ func NewZeroLogger() ZeroLog { zerolog.SetGlobalLevel(zerolog.DebugLevel) - // Check if logging is disabled via environment variable - enabled := os.Getenv("DISABLE_LOGGING") != "true" + // ESPRESSO_LOG_ENABLED defaults to true. Set to "false" to disable all logging. + // Note: The env var is read once at initialization; changes after process start are not reflected. + enabled := os.Getenv("ESPRESSO_LOG_ENABLED") != "false" zeroLog := ZeroLog{ logger: log.Logger, @@ -48,28 +49,34 @@ func addFields(event *zerolog.Event, fields map[string]any) *zerolog.Event { return event } -func (l ZeroLog) Info(ctx context.Context, msg string, fields customLogger.Fields) { +func (l ZeroLog) logIfEnabled(fn func()) { if l.enabled { - addFields(l.logger.Info(), fields).Msg(msg) + fn() } } +func (l ZeroLog) Info(ctx context.Context, msg string, fields customLogger.Fields) { + l.logIfEnabled(func() { + addFields(l.logger.Info(), fields).Msg(msg) + }) +} + func (l ZeroLog) Warn(ctx context.Context, msg string, fields customLogger.Fields) { - if l.enabled { + l.logIfEnabled(func() { addFields(l.logger.Warn(), fields).Msg(msg) - } + }) } func (l ZeroLog) Error(ctx context.Context, msg string, err error, fields customLogger.Fields) { - if l.enabled { + l.logIfEnabled(func() { addFields(l.logger.Err(err), fields).Msg(msg) - } + }) } func (l ZeroLog) Debug(ctx context.Context, msg string, fields customLogger.Fields) { - if l.enabled { + l.logIfEnabled(func() { addFields(l.logger.Debug(), fields).Msg(msg) - } + }) } func (l ZeroLog) Enabled() bool {