Squash merge audio-player-component into main

This commit is contained in:
2026-02-13 20:39:23 -06:00
parent 9b7cfd5bd1
commit d78c0584e2
122 changed files with 11750 additions and 1175 deletions
+88 -5
View File
@@ -1,11 +1,94 @@
// Package logging provides a slog-based logger adapter for Wails.
package logging
import (
"encoding/json"
"fmt"
"log/slog"
"strings"
)
// TODO check that error
func PrettyJSON(obj interface{}) string {
bytes, _ := json.MarshalIndent(obj, "\t", "\t")
return string(bytes)
// Logger wraps slog to implement the Wails logger interface.
type Logger struct {
slogger *slog.Logger
moduleFilters []string
}
// NewLogger creates a logger with optional message filters.
func NewLogger(slogger *slog.Logger, filters []string) *Logger {
return &Logger{
slogger: slogger,
moduleFilters: filters,
}
}
// Print outputs a message if not filtered.
func (l *Logger) Print(message string) {
if l.isFilteredOut(message) {
return
}
fmt.Printf("[Print] %s\n", message)
}
// Trace logs a trace-level message if not filtered.
func (l *Logger) Trace(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Debug("[Trace] " + message)
}
// Debug logs a debug-level message if not filtered.
func (l *Logger) Debug(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Debug(message)
}
// Info logs an info-level message if not filtered.
func (l *Logger) Info(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Info(message)
}
// Warning logs a warning-level message if not filtered.
func (l *Logger) Warning(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Warn(message)
}
func (l *Logger) Error(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Error(message)
}
// Fatal logs a fatal-level message if not filtered.
func (l *Logger) Fatal(message string) {
if l.isFilteredOut(message) {
return
}
l.slogger.Error("[Trace] " + message)
}
func (l *Logger) isFilteredOut(message string) bool {
for _, f := range l.moduleFilters {
if strings.HasPrefix(message, fmt.Sprintf("[%s]", f)) {
return true
}
}
return false
}