Files
ai-mailer/internal/logger/logger.go

65 lines
1.1 KiB
Go

package logger
import (
"io"
"os"
"github.com/sirupsen/logrus"
)
var log = logrus.New()
func Init(level string, filePath string) error {
// Set log level
lvl, err := logrus.ParseLevel(level)
if err != nil {
return err
}
log.SetLevel(lvl)
// Configure output
if filePath != "" {
file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return err
}
log.SetOutput(io.MultiWriter(os.Stdout, file))
}
log.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
})
return nil
}
// Standard logging methods
func Debug(args ...interface{}) {
log.Debug(args...)
}
func Info(args ...interface{}) {
log.Info(args...)
}
func Error(args ...interface{}) {
log.Error(args...)
}
func Warn(args ...interface{}) {
log.Warn(args...)
}
// Structured logging methods
func WithField(key string, value interface{}) *logrus.Entry {
return log.WithField(key, value)
}
func WithFields(fields logrus.Fields) *logrus.Entry {
return log.WithFields(fields)
}
func WithError(err error) *logrus.Entry {
return log.WithError(err)
}