Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion log/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
25 changes: 25 additions & 0 deletions log/log_test.go
Original file line number Diff line number Diff line change
@@ -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) })
}
Loading