Files
phishingclub/backend/log/gomail.go
2025-09-15 19:31:18 +02:00

55 lines
1.2 KiB
Go

package log
import (
"fmt"
"github.com/wneessen/go-mail/log"
"go.uber.org/zap"
)
// GoMailLoggerAdapter adapts zap.SugaredLogger to go-mail's Logger interface
type GoMailLoggerAdapter struct {
logger *zap.SugaredLogger
}
func (z *GoMailLoggerAdapter) formatLogMessage(l log.Log) string {
direction := "CLIENT"
if l.Direction == log.DirServerToClient {
direction = "SERVER"
}
// format the message with arguments if present
msg := l.Format
if len(l.Messages) > 0 {
// create interface slice for fmt.Sprintf
args := make([]interface{}, len(l.Messages))
for i, m := range l.Messages {
args[i] = m
}
msg = fmt.Sprintf(l.Format, args...)
}
return fmt.Sprintf("SMTP %s: %s", direction, msg)
}
func (z *GoMailLoggerAdapter) Debugf(l log.Log) {
z.logger.Debug(z.formatLogMessage(l))
}
func (z *GoMailLoggerAdapter) Infof(l log.Log) {
z.logger.Info(z.formatLogMessage(l))
}
func (z *GoMailLoggerAdapter) Warnf(l log.Log) {
z.logger.Warn(z.formatLogMessage(l))
}
func (z *GoMailLoggerAdapter) Errorf(l log.Log) {
z.logger.Error(z.formatLogMessage(l))
}
// NewGoMailLoggerAdapter creates a new go-mail logger adapter
func NewGoMailLoggerAdapter(logger *zap.SugaredLogger) *GoMailLoggerAdapter {
return &GoMailLoggerAdapter{logger: logger}
}