From 5fd9fc95d2b5c5b70282a10226f101e31c4a8468 Mon Sep 17 00:00:00 2001 From: fazeen-wego Date: Mon, 19 Jan 2026 12:00:34 +0500 Subject: [PATCH 1/3] Add promo code logging in existing logger --- logger/const.go | 2 ++ logger/logger.go | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/logger/const.go b/logger/const.go index de0397c..e6734d9 100644 --- a/logger/const.go +++ b/logger/const.go @@ -14,6 +14,7 @@ const ( ultronExFileName = "ultronex.{{env}}.log" partnerRequestsFileName = "partner_requests.{{env}}.log" requestsFileName = "requests.{{env}}.log" + promoCodeEventsFileName = "promocode_events.log" defaultReplacement = "[Filtered by Wego]" defaultMaskChar = "*" arrayKey = "[]" @@ -21,6 +22,7 @@ const ( logTypeUltronex logType = "ultronEx" logTypePartnerRequest logType = "partnerRequest" logTypeRequest logType = "request" + logTypePromoCodeEvent logType = "promoCodeEvent" contextKeyRequest contextKey = "request" contextKeyRequestType contextKey = "requestType" diff --git a/logger/logger.go b/logger/logger.go index ecc2179..c5f7d0a 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -74,9 +74,24 @@ func LogRequest(log *Request) { } } +// LogPromoCodeEvent logs a promo-code event to a local file. +// The event is logged as a flat JSON object (key/value pairs). +func LogPromoCodeEvent(fields map[string]interface{}) { + logger := loggers[logTypePromoCodeEvent] + if logger == nil || len(fields) == 0 { + return + } + + zapFields := make([]zap.Field, 0, len(fields)) + for key, value := range fields { + zapFields = append(zapFields, zap.Any(key, value)) + } + logger.Info("", zapFields...) +} + // Init initializes loggers func Init() error { - loggers = make(map[logType]*zap.Logger, 2) + loggers = make(map[logType]*zap.Logger, 4) uLog, err := initLogger(ultronExFileName) if err != nil { @@ -95,6 +110,12 @@ func Init() error { return errors.New("cannot init request logger", err) } loggers[logTypeRequest] = rLog + + pcLog, err := initLogger(promoCodeEventsFileName) + if err != nil { + return errors.New("cannot init promo code event logger", err) + } + loggers[logTypePromoCodeEvent] = pcLog return nil } From ccb101ae48b2eca5e0fe4f91bd29dfc720311ac0 Mon Sep 17 00:00:00 2001 From: fazeen-wego Date: Mon, 30 Mar 2026 15:43:11 +0500 Subject: [PATCH 2/3] Add env variable to promocode_events log filename [WG-1202] Align with convention: ultronex.{{env}}.log, partner_requests.{{env}}.log, etc. Co-Authored-By: Claude Opus 4.6 --- logger/const.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logger/const.go b/logger/const.go index e6734d9..9250834 100644 --- a/logger/const.go +++ b/logger/const.go @@ -14,7 +14,7 @@ const ( ultronExFileName = "ultronex.{{env}}.log" partnerRequestsFileName = "partner_requests.{{env}}.log" requestsFileName = "requests.{{env}}.log" - promoCodeEventsFileName = "promocode_events.log" + promoCodeEventsFileName = "promocode_events.{{env}}.log" defaultReplacement = "[Filtered by Wego]" defaultMaskChar = "*" arrayKey = "[]" From 7f6be0f12784a662973433d3a0c33108f0e6b316 Mon Sep 17 00:00:00 2001 From: fazeen-wego Date: Tue, 7 Apr 2026 11:23:00 +0500 Subject: [PATCH 3/3] Use `any` instead of `interface{}` in LogPromoCodeEvent [WG-1202] Co-Authored-By: Claude Opus 4.6 (1M context) --- logger/logger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logger/logger.go b/logger/logger.go index c5f7d0a..9e59083 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -76,7 +76,7 @@ func LogRequest(log *Request) { // LogPromoCodeEvent logs a promo-code event to a local file. // The event is logged as a flat JSON object (key/value pairs). -func LogPromoCodeEvent(fields map[string]interface{}) { +func LogPromoCodeEvent(fields map[string]any) { logger := loggers[logTypePromoCodeEvent] if logger == nil || len(fields) == 0 { return