Files
mq/logger/log.go
2025-09-18 18:26:35 +05:45

61 lines
1.4 KiB
Go

// phuslulog.go
package logger
import "github.com/oarkflow/log"
// DefaultLogger implements the Logger interface using phuslu/log.
type DefaultLogger struct {
logger *log.Logger
}
func NewDefaultLogger(loggers ...*log.Logger) *DefaultLogger {
var logger *log.Logger
if len(loggers) > 0 {
logger = loggers[0]
} else {
logger = &log.DefaultLogger
}
return &DefaultLogger{logger: logger}
}
// Debug logs a debug-level message.
func (l *DefaultLogger) Debug(msg string, fields ...Field) {
if l.logger == nil {
return
}
l.logger.Debug().Map(flattenFields(fields)).Msg(msg)
}
// Info logs an info-level message.
func (l *DefaultLogger) Info(msg string, fields ...Field) {
if l.logger == nil {
return
}
l.logger.Info().Map(flattenFields(fields)).Msg(msg)
}
// Warn logs a warn-level message.
func (l *DefaultLogger) Warn(msg string, fields ...Field) {
if l.logger == nil {
return
}
l.logger.Warn().Map(flattenFields(fields)).Msg(msg)
}
// Error logs an error-level message.
func (l *DefaultLogger) Error(msg string, fields ...Field) {
if l.logger == nil {
return
}
l.logger.Error().Map(flattenFields(fields)).Msg(msg)
}
// flattenFields converts a slice of Field into a slice of any key/value pairs.
func flattenFields(fields []Field) map[string]any {
kv := make(map[string]any)
for _, field := range fields {
kv[field.Key] = field.Value
}
return kv
}