gocron/logger.go

95 lines
2.2 KiB
Go
Raw Normal View History

2023-11-09 22:00:18 +00:00
//go:generate mockgen -source=logger.go -destination=mocks/logger.go -package=gocronmocks
2023-11-08 17:11:42 +00:00
package gocron
import (
2023-11-09 15:49:21 +00:00
"log"
2023-11-08 17:11:42 +00:00
)
// Logger is the interface that wraps the basic logging methods
// used by gocron. The methods are modeled after the standard
// library slog package. The default logger is a no-op logger.
// To enable logging, use one of the provided New*Logger functions
// or implement your own Logger. The actual level of Log that is logged
// is handled by the implementation.
type Logger interface {
2023-11-09 15:49:21 +00:00
Debug(msg string, args ...interface{})
Error(msg string, args ...interface{})
Info(msg string, args ...interface{})
Warn(msg string, args ...interface{})
2023-11-08 17:11:42 +00:00
}
var _ Logger = (*noOpLogger)(nil)
type noOpLogger struct{}
2023-11-09 15:49:21 +00:00
func (l noOpLogger) Debug(_ string, _ ...interface{}) {}
func (l noOpLogger) Error(_ string, _ ...interface{}) {}
func (l noOpLogger) Info(_ string, _ ...interface{}) {}
func (l noOpLogger) Warn(_ string, _ ...interface{}) {}
2023-11-08 17:11:42 +00:00
2023-11-09 15:49:21 +00:00
var _ Logger = (*logger)(nil)
2023-11-08 17:11:42 +00:00
2023-11-09 15:49:21 +00:00
// LogLevel is the level of logging that should be logged
// when using the basic NewLogger.
type LogLevel int
const (
LogLevelError LogLevel = iota
LogLevelWarn
LogLevelInfo
LogLevelDebug
)
2023-11-08 17:11:42 +00:00
2023-11-09 15:49:21 +00:00
type logger struct {
level LogLevel
2023-11-08 17:11:42 +00:00
}
2023-11-09 15:49:21 +00:00
// NewLogger returns a new Logger that logs at the given level.
func NewLogger(level LogLevel) Logger {
return &logger{level: level}
2023-11-08 17:11:42 +00:00
}
2023-11-09 15:49:21 +00:00
func (l *logger) Debug(msg string, args ...interface{}) {
if l.level < LogLevelDebug {
return
}
if len(args) == 0 {
log.Printf("DEBUG: %s\n", msg)
return
}
2023-11-09 15:49:21 +00:00
log.Printf("DEBUG: %s, %v\n", msg, args)
2023-11-08 17:11:42 +00:00
}
2023-11-09 15:49:21 +00:00
func (l *logger) Error(msg string, args ...interface{}) {
if l.level < LogLevelError {
return
}
if len(args) == 0 {
log.Printf("ERROR: %s\n", msg)
return
}
2023-11-09 15:49:21 +00:00
log.Printf("ERROR: %s, %v\n", msg, args)
2023-11-08 17:11:42 +00:00
}
2023-11-09 15:49:21 +00:00
func (l *logger) Info(msg string, args ...interface{}) {
if l.level < LogLevelInfo {
return
}
if len(args) == 0 {
log.Printf("INFO: %s\n", msg)
return
}
2023-11-09 15:49:21 +00:00
log.Printf("INFO: %s, %v\n", msg, args)
2023-11-08 17:11:42 +00:00
}
2023-11-09 15:49:21 +00:00
func (l *logger) Warn(msg string, args ...interface{}) {
if l.level < LogLevelWarn {
return
}
if len(args) == 0 {
log.Printf("WARN: %s\n", msg)
return
}
2023-11-09 15:49:21 +00:00
log.Printf("WARN: %s, %v\n", msg, args)
2023-11-08 17:11:42 +00:00
}