From afe21b7ca039262f7968d2835f7097653511f415 Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Sat, 21 Dec 2024 23:00:30 +0800 Subject: [PATCH] feat: implement logging interfaces and service logger - Added Logger interface in core/interfaces/logger.go for standardized logging methods (Debugf, Infof, Warnf, Errorf). - Introduced ServiceLogger in core/utils/log.go, which prefixes log messages with the service name for better context. - Implemented logging methods in ServiceLogger to utilize the apex/log package for structured logging. --- core/interfaces/logger.go | 16 +++++++++++++++ core/utils/log.go | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 core/interfaces/logger.go create mode 100644 core/utils/log.go diff --git a/core/interfaces/logger.go b/core/interfaces/logger.go new file mode 100644 index 00000000..dce1ee6d --- /dev/null +++ b/core/interfaces/logger.go @@ -0,0 +1,16 @@ +package interfaces + +// Logger interface for reporting informational and warning messages. +type Logger interface { + // Debugf logs a formatted debugging message. + Debugf(format string, args ...interface{}) + + // Infof logs a formatted informational message. + Infof(format string, args ...interface{}) + + // Warnf logs a formatted warning message. + Warnf(format string, args ...interface{}) + + // Errorf logs a formatted error message. + Errorf(format string, args ...interface{}) +} diff --git a/core/utils/log.go b/core/utils/log.go new file mode 100644 index 00000000..babda4ac --- /dev/null +++ b/core/utils/log.go @@ -0,0 +1,42 @@ +package utils + +import ( + "fmt" + "github.com/apex/log" +) + +// ServiceLogger represents a logger with a specific service prefix. +type ServiceLogger struct { + prefix string +} + +// NewServiceLogger creates a new logger with the given service name as a prefix. +func NewServiceLogger(serviceName string) *ServiceLogger { + return &ServiceLogger{ + prefix: serviceName, + } +} + +// Infof logs an informational message with formatted content. +func (l *ServiceLogger) Infof(format string, args ...interface{}) { + log.Infof(l.getFormat(format), args...) +} + +// Warnf logs a warning message with formatted content. +func (l *ServiceLogger) Warnf(format string, args ...interface{}) { + log.Warnf(l.getFormat(format), args...) +} + +// Errorf logs an error message with formatted content. +func (l *ServiceLogger) Errorf(format string, args ...interface{}) { + log.Errorf(l.getFormat(format), args...) +} + +// Debugf logs a debug message with formatted content. +func (l *ServiceLogger) Debugf(format string, args ...interface{}) { + log.Debugf(l.getFormat(format), args...) +} + +func (l *ServiceLogger) getFormat(format string) string { + return fmt.Sprintf("[%s] %s", l.prefix, format) +}