feat(log): add SetLevel to control default logger verbosity (#632)

This commit is contained in:
David Rogers
2026-08-17 10:39:46 +08:00
committed by GitHub
parent fa3eb17cd4
commit adfb6d993e
2 changed files with 35 additions and 1 deletions
+10 -1
View File
@@ -5,8 +5,17 @@ import "fmt"
// defaultLogger is the default logger used by the package-level functions.
var defaultLogger = NewLogger(nil)
// SetLevel sets the minimum level of the package-level logger; messages below v
// are suppressed. Consumers embedding HackBrowserData as a library use it to
// quiet output, e.g. SetLevel(FatalLevel) to silence everything short of a fatal
// error. It panics if v is less than DebugLevel or greater than FatalLevel.
func SetLevel(v Level) {
defaultLogger.SetLevel(v)
}
// SetVerbose lowers the package-level logger to DebugLevel.
func SetVerbose() {
defaultLogger.SetLevel(DebugLevel)
SetLevel(DebugLevel)
}
func Debug(args ...any) {
+25
View File
@@ -0,0 +1,25 @@
package log
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSetLevel(t *testing.T) {
t.Cleanup(func() { SetLevel(InfoLevel) }) // restore package default
SetLevel(FatalLevel)
assert.False(t, defaultLogger.canLogAt(InfoLevel), "Info must be suppressed at FatalLevel")
assert.False(t, defaultLogger.canLogAt(WarnLevel), "Warn must be suppressed at FatalLevel")
assert.False(t, defaultLogger.canLogAt(ErrorLevel), "Error must be suppressed at FatalLevel")
assert.True(t, defaultLogger.canLogAt(FatalLevel), "Fatal must still log at FatalLevel")
SetVerbose()
assert.True(t, defaultLogger.canLogAt(DebugLevel), "SetVerbose must enable Debug")
}
func TestSetLevelInvalidPanics(t *testing.T) {
t.Cleanup(func() { SetLevel(InfoLevel) })
assert.Panics(t, func() { SetLevel(FatalLevel + 1) })
}