mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
120 lines
2.6 KiB
Go
120 lines
2.6 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// Log levels
|
|
const (
|
|
LevelDebug = "DEBUG"
|
|
LevelInfo = "INFO"
|
|
LevelWarn = "WARN"
|
|
LevelError = "ERROR"
|
|
)
|
|
|
|
// Logger is the interface for logging
|
|
var (
|
|
// DefaultLogger is the default logger instance
|
|
DefaultLogger = NewLogger(LevelInfo)
|
|
)
|
|
|
|
// Logger represents a simple logger
|
|
type Logger struct {
|
|
level string
|
|
}
|
|
|
|
// NewLogger creates a new logger instance with the specified log level
|
|
func NewLogger(level string) *Logger {
|
|
return &Logger{level: level}
|
|
}
|
|
|
|
// SetLevel changes the logger level at runtime
|
|
func (l *Logger) SetLevel(level string) {
|
|
switch strings.ToUpper(strings.TrimSpace(level)) {
|
|
case LevelDebug, LevelInfo, LevelWarn, LevelError:
|
|
l.level = strings.ToUpper(strings.TrimSpace(level))
|
|
default:
|
|
// keep previous
|
|
}
|
|
}
|
|
|
|
// SetLevel changes the default logger level at runtime
|
|
func SetLevel(level string) {
|
|
if DefaultLogger != nil {
|
|
DefaultLogger.SetLevel(level)
|
|
}
|
|
}
|
|
|
|
// Debug logs a debug message
|
|
func (l *Logger) Debug(message string, args ...interface{}) {
|
|
if l.shouldLog(LevelDebug) {
|
|
l.log(LevelDebug, message, args...)
|
|
}
|
|
}
|
|
|
|
// Info logs an info message
|
|
func (l *Logger) Info(message string, args ...interface{}) {
|
|
if l.shouldLog(LevelInfo) {
|
|
l.log(LevelInfo, message, args...)
|
|
}
|
|
}
|
|
|
|
// Warn logs a warning message
|
|
func (l *Logger) Warn(message string, args ...interface{}) {
|
|
if l.shouldLog(LevelWarn) {
|
|
l.log(LevelWarn, message, args...)
|
|
}
|
|
}
|
|
|
|
// Error logs an error message
|
|
func (l *Logger) Error(message string, args ...interface{}) {
|
|
if l.shouldLog(LevelError) {
|
|
l.log(LevelError, message, args...)
|
|
}
|
|
}
|
|
|
|
// shouldLog checks if the log level is enabled
|
|
func (l *Logger) shouldLog(level string) bool {
|
|
levels := map[string]int{
|
|
LevelDebug: 0,
|
|
LevelInfo: 1,
|
|
LevelWarn: 2,
|
|
LevelError: 3,
|
|
}
|
|
|
|
return levels[level] >= levels[l.level]
|
|
}
|
|
|
|
// log writes the log message to stderr
|
|
func (l *Logger) log(level, message string, args ...interface{}) {
|
|
msg := message
|
|
if len(args) > 0 {
|
|
msg = fmt.Sprintf(message, args...)
|
|
}
|
|
fmt.Fprintf(os.Stderr, "[%s] %s\n", level, msg)
|
|
}
|
|
|
|
// Package level functions
|
|
|
|
// Debug logs a debug message using the default logger
|
|
func Debug(message string, args ...interface{}) {
|
|
DefaultLogger.Debug(message, args...)
|
|
}
|
|
|
|
// Info logs an info message using the default logger
|
|
func Info(message string, args ...interface{}) {
|
|
DefaultLogger.Info(message, args...)
|
|
}
|
|
|
|
// Warn logs a warning message using the default logger
|
|
func Warn(message string, args ...interface{}) {
|
|
DefaultLogger.Warn(message, args...)
|
|
}
|
|
|
|
// Error logs an error message using the default logger
|
|
func Error(message string, args ...interface{}) {
|
|
DefaultLogger.Error(message, args...)
|
|
}
|