mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-10 07:25:37 -05:00
rename backend to core
This commit is contained in:
116
core/internal/log/log.go
Normal file
116
core/internal/log/log.go
Normal file
@@ -0,0 +1,116 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
cblog "github.com/charmbracelet/log"
|
||||
)
|
||||
|
||||
// Logger embeds the Charm Logger and adds Printf/Fatalf
|
||||
type Logger struct{ *cblog.Logger }
|
||||
|
||||
// Printf routes goose/info-style logs through Infof.
|
||||
func (l *Logger) Printf(format string, v ...interface{}) { l.Infof(format, v...) }
|
||||
|
||||
// Fatalf keeps goose’s contract of exiting the program.
|
||||
func (l *Logger) Fatalf(format string, v ...interface{}) { l.Logger.Fatalf(format, v...) }
|
||||
|
||||
var (
|
||||
logger *Logger
|
||||
initLogger sync.Once
|
||||
)
|
||||
|
||||
func parseLogLevel(level string) cblog.Level {
|
||||
switch strings.ToLower(level) {
|
||||
case "debug":
|
||||
return cblog.DebugLevel
|
||||
case "info":
|
||||
return cblog.InfoLevel
|
||||
case "warn", "warning":
|
||||
return cblog.WarnLevel
|
||||
case "error":
|
||||
return cblog.ErrorLevel
|
||||
case "fatal":
|
||||
return cblog.FatalLevel
|
||||
default:
|
||||
return cblog.InfoLevel
|
||||
}
|
||||
}
|
||||
|
||||
func GetQtLoggingRules() string {
|
||||
level := os.Getenv("DMS_LOG_LEVEL")
|
||||
if level == "" {
|
||||
level = "info"
|
||||
}
|
||||
|
||||
var rules []string
|
||||
switch strings.ToLower(level) {
|
||||
case "fatal":
|
||||
rules = []string{"*.debug=false", "*.info=false", "*.warning=false", "*.critical=false"}
|
||||
case "error":
|
||||
rules = []string{"*.debug=false", "*.info=false", "*.warning=false"}
|
||||
case "warn", "warning":
|
||||
rules = []string{"*.debug=false", "*.info=false"}
|
||||
case "info":
|
||||
rules = []string{"*.debug=false"}
|
||||
case "debug":
|
||||
return ""
|
||||
default:
|
||||
rules = []string{"*.debug=false"}
|
||||
}
|
||||
|
||||
return strings.Join(rules, ";")
|
||||
}
|
||||
|
||||
// GetLogger returns a logger instance
|
||||
func GetLogger() *Logger {
|
||||
initLogger.Do(func() {
|
||||
styles := cblog.DefaultStyles()
|
||||
// Attempt to match the colors used by qml/quickshell logs
|
||||
styles.Levels[cblog.FatalLevel] = lipgloss.NewStyle().
|
||||
SetString(" FATAL").
|
||||
Foreground(lipgloss.Color("1"))
|
||||
styles.Levels[cblog.ErrorLevel] = lipgloss.NewStyle().
|
||||
SetString(" ERROR").
|
||||
Foreground(lipgloss.Color("9"))
|
||||
styles.Levels[cblog.WarnLevel] = lipgloss.NewStyle().
|
||||
SetString(" WARN").
|
||||
Foreground(lipgloss.Color("3"))
|
||||
styles.Levels[cblog.InfoLevel] = lipgloss.NewStyle().
|
||||
SetString(" INFO").
|
||||
Foreground(lipgloss.Color("2"))
|
||||
styles.Levels[cblog.DebugLevel] = lipgloss.NewStyle().
|
||||
SetString(" DEBUG").
|
||||
Foreground(lipgloss.Color("4"))
|
||||
|
||||
base := cblog.New(os.Stderr)
|
||||
base.SetStyles(styles)
|
||||
base.SetReportTimestamp(false)
|
||||
|
||||
level := cblog.InfoLevel
|
||||
if envLevel := os.Getenv("DMS_LOG_LEVEL"); envLevel != "" {
|
||||
level = parseLogLevel(envLevel)
|
||||
}
|
||||
base.SetLevel(level)
|
||||
base.SetPrefix(" go")
|
||||
|
||||
logger = &Logger{base}
|
||||
})
|
||||
return logger
|
||||
}
|
||||
|
||||
// * Convenience wrappers
|
||||
|
||||
func Debug(msg interface{}, keyvals ...interface{}) { GetLogger().Logger.Debug(msg, keyvals...) }
|
||||
func Debugf(format string, v ...interface{}) { GetLogger().Logger.Debugf(format, v...) }
|
||||
func Info(msg interface{}, keyvals ...interface{}) { GetLogger().Logger.Info(msg, keyvals...) }
|
||||
func Infof(format string, v ...interface{}) { GetLogger().Logger.Infof(format, v...) }
|
||||
func Warn(msg interface{}, keyvals ...interface{}) { GetLogger().Logger.Warn(msg, keyvals...) }
|
||||
func Warnf(format string, v ...interface{}) { GetLogger().Logger.Warnf(format, v...) }
|
||||
func Error(msg interface{}, keyvals ...interface{}) { GetLogger().Logger.Error(msg, keyvals...) }
|
||||
func Errorf(format string, v ...interface{}) { GetLogger().Logger.Errorf(format, v...) }
|
||||
func Fatal(msg interface{}, keyvals ...interface{}) { GetLogger().Logger.Fatal(msg, keyvals...) }
|
||||
func Fatalf(format string, v ...interface{}) { GetLogger().Logger.Fatalf(format, v...) }
|
||||
Reference in New Issue
Block a user