Files
Go-Template/logger/log.go
Ron Rise 12bbacced0
All checks were successful
🧪 ✨ Unit Tests Workflow / 🔍 🐹 Go Tests (push) Successful in 1m5s
lint (#2)
Reviewed-on: Siteworxpro/Go-Template#2
Co-authored-by: Ron Rise <ron@siteworxpro.com>
Co-committed-by: Ron Rise <ron@siteworxpro.com>
2025-06-18 02:16:10 +00:00

66 lines
1.3 KiB
Go

package logger
import (
"context"
log "github.com/sirupsen/logrus"
)
type contextKeyType string
const contextKey contextKeyType = "logger"
type Interface interface {
Info(format string, args ...interface{})
Error(format string, args ...interface{})
Debug(format string, args ...interface{})
Warn(format string, args ...interface{})
GetLevel() log.Level
}
type Logger struct {
logger *log.Logger
}
func FromContext(ctx context.Context) *Logger {
logger, ok := ctx.Value(contextKey).(*Logger)
if !ok {
return nil
}
return logger
}
func NewLogger(level log.Level) *Logger {
l := log.New()
l.SetFormatter(&log.JSONFormatter{})
l.SetLevel(level)
return &Logger{
logger: l,
}
}
func NewContext(ctx context.Context, logger Interface) context.Context {
return context.WithValue(ctx, contextKey, logger)
}
func (l *Logger) Info(format string, args ...interface{}) {
l.logger.Infof(format, args...)
}
func (l *Logger) Error(format string, args ...interface{}) {
l.logger.Errorf(format, args...)
}
func (l *Logger) Debug(format string, args ...interface{}) {
l.logger.Debugf(format, args...)
}
func (l *Logger) Warn(format string, args ...interface{}) {
l.logger.Warnf(format, args...)
}
func (l *Logger) GetLevel() log.Level {
return l.logger.GetLevel()
}