76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
//go:build js && wasm
|
|
|
|
package wasmdb
|
|
|
|
import (
|
|
"fmt"
|
|
"syscall/js"
|
|
"time"
|
|
|
|
"lol.mleku.dev"
|
|
)
|
|
|
|
// logger provides logging functionality for the wasmdb package
|
|
// It outputs to the browser console via console.log/warn/error
|
|
type logger struct {
|
|
level int
|
|
}
|
|
|
|
// NewLogger creates a new logger with the specified level
|
|
func NewLogger(level int) *logger {
|
|
return &logger{level: level}
|
|
}
|
|
|
|
// SetLogLevel changes the logging level
|
|
func (l *logger) SetLogLevel(level int) {
|
|
l.level = level
|
|
}
|
|
|
|
// formatMessage creates a formatted log message with timestamp
|
|
func (l *logger) formatMessage(level, format string, args ...interface{}) string {
|
|
msg := fmt.Sprintf(format, args...)
|
|
return fmt.Sprintf("[%s] [wasmdb] [%s] %s",
|
|
time.Now().Format("15:04:05.000"),
|
|
level,
|
|
msg,
|
|
)
|
|
}
|
|
|
|
// Debugf logs a debug message
|
|
func (l *logger) Debugf(format string, args ...interface{}) {
|
|
if l.level <= lol.Debug {
|
|
msg := l.formatMessage("DEBUG", format, args...)
|
|
js.Global().Get("console").Call("log", msg)
|
|
}
|
|
}
|
|
|
|
// Infof logs an info message
|
|
func (l *logger) Infof(format string, args ...interface{}) {
|
|
if l.level <= lol.Info {
|
|
msg := l.formatMessage("INFO", format, args...)
|
|
js.Global().Get("console").Call("log", msg)
|
|
}
|
|
}
|
|
|
|
// Warnf logs a warning message
|
|
func (l *logger) Warnf(format string, args ...interface{}) {
|
|
if l.level <= lol.Warn {
|
|
msg := l.formatMessage("WARN", format, args...)
|
|
js.Global().Get("console").Call("warn", msg)
|
|
}
|
|
}
|
|
|
|
// Errorf logs an error message
|
|
func (l *logger) Errorf(format string, args ...interface{}) {
|
|
if l.level <= lol.Error {
|
|
msg := l.formatMessage("ERROR", format, args...)
|
|
js.Global().Get("console").Call("error", msg)
|
|
}
|
|
}
|
|
|
|
// Fatalf logs a fatal message (does not exit in WASM)
|
|
func (l *logger) Fatalf(format string, args ...interface{}) {
|
|
msg := l.formatMessage("FATAL", format, args...)
|
|
js.Global().Get("console").Call("error", msg)
|
|
}
|