mirror of
https://github.com/tale/headplane.git
synced 2026-08-11 14:26:56 +00:00
feat: use a debug logger for agent
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Logger struct {
|
||||
debug *log.Logger
|
||||
info *log.Logger
|
||||
error *log.Logger
|
||||
}
|
||||
|
||||
var lock = &sync.Mutex{}
|
||||
var logger *Logger
|
||||
|
||||
func GetLogger() *Logger {
|
||||
if logger == nil {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
if logger == nil {
|
||||
logger = NewLogger()
|
||||
}
|
||||
}
|
||||
|
||||
return logger
|
||||
}
|
||||
|
||||
func NewLogger() *Logger {
|
||||
// Create a new Logger for stdout and stderr
|
||||
// Errors still go to both stdout and stderr
|
||||
return &Logger{
|
||||
debug: nil,
|
||||
info: log.New(os.Stdout, "[INFO] ", log.LstdFlags),
|
||||
error: log.New(os.Stderr, "[ERROR] ", log.LstdFlags),
|
||||
}
|
||||
}
|
||||
|
||||
func (logger *Logger) SetDebug(debug bool) {
|
||||
if debug {
|
||||
logger.Info("Enabling Debug logging for headplane-agent")
|
||||
logger.Info("Be careful, this will spam a lot of information")
|
||||
logger.debug = log.New(os.Stdout, "[DEBUG] ", log.LstdFlags)
|
||||
} else {
|
||||
logger.debug = nil
|
||||
}
|
||||
}
|
||||
|
||||
func (logger *Logger) Info(fmt string, v ...any) {
|
||||
logger.info.Printf(fmt, v...)
|
||||
}
|
||||
|
||||
func (logger *Logger) Debug(fmt string, v ...any) {
|
||||
if logger.debug != nil {
|
||||
logger.debug.Printf(fmt, v...)
|
||||
}
|
||||
}
|
||||
|
||||
func (logger *Logger) Error(fmt string, v ...any) {
|
||||
logger.error.Printf(fmt, v...)
|
||||
}
|
||||
|
||||
func (logger *Logger) Fatal(fmt string, v ...any) {
|
||||
logger.error.Fatalf(fmt, v...)
|
||||
}
|
||||
Reference in New Issue
Block a user