diff --git a/wasm/logging.go b/wasm/logging.go index a39cf7facb418f3f516c6511e258fb7132f69709..15aed1a96d8e4fe93aae7ca372a8c66aca648430 100644 --- a/wasm/logging.go +++ b/wasm/logging.go @@ -56,7 +56,7 @@ func LogLevel(_ js.Value, args []js.Value) interface{} { jww.SetLogThreshold(threshold) jww.SetFlags(log.LstdFlags | log.Lmicroseconds) - ll := &LogListener{threshold, js.Global().Get("console")} + ll := NewLogListener(threshold, js.Global().Get("console")) logListeners = append(logListeners, ll.Listen) jww.SetLogListeners(logListeners...) jww.SetStdoutThreshold(jww.LevelFatal + 1) @@ -184,6 +184,32 @@ func (c *console) Write(p []byte) (n int, err error) { type LogListener struct { jww.Threshold js.Value + + trace *console + debug *console + info *console + error *console + warn *console + critical *console + fatal *console + def *console +} + +// NewLogListener initialises a new log listener that listener for the specific +// threshold and prints the logs to the Javascript console. +func NewLogListener(threshold jww.Threshold, consoleObj js.Value) *LogListener { + return &LogListener{ + Threshold: threshold, + Value: consoleObj, + trace: &console{"debug", consoleObj}, + debug: &console{"log", consoleObj}, + info: &console{"info", consoleObj}, + warn: &console{"warn", consoleObj}, + error: &console{"error", consoleObj}, + critical: &console{"error", consoleObj}, + fatal: &console{"error", consoleObj}, + def: &console{"log", consoleObj}, + } } // Listen is called for every logging event. This function adheres to the @@ -195,21 +221,21 @@ func (ll *LogListener) Listen(t jww.Threshold) io.Writer { switch t { case jww.LevelTrace: - return &console{"debug", ll.Value} + return ll.trace case jww.LevelDebug: - return &console{"log", ll.Value} + return ll.debug case jww.LevelInfo: - return &console{"info", ll.Value} + return ll.info case jww.LevelWarn: - return &console{"warn", ll.Value} + return ll.warn case jww.LevelError: - return &console{"error", ll.Value} + return ll.error case jww.LevelCritical: - return &console{"error", ll.Value} + return ll.critical case jww.LevelFatal: - return &console{"error", ll.Value} + return ll.fatal default: - return &console{"log", ll.Value} + return ll.def } }