mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
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...)
|
||||
}
|
||||
Reference in New Issue
Block a user