log: set locationEnabled if backtrace is enabled

This commit is contained in:
Martin Holst Swende 2023-09-07 10:12:56 +02:00
parent 99c123c689
commit 8d969279c6
No known key found for this signature in database
GPG key ID: 683B438C05A5DDF0
2 changed files with 7 additions and 25 deletions

View file

@ -172,7 +172,8 @@ func (h *GlogHandler) BacktraceAt(location string) error {
h.location = location
h.backtrace.Store(len(location) > 0)
// Enable location storage (globally)
locationEnabled.Store(true)
return nil
}

View file

@ -25,40 +25,21 @@ func (n notimeHandler) Log(r *Record) error {
return n.next.Log(r)
}
func TestLoggingNoTrace(t *testing.T) {
out := new(bytes.Buffer)
logger := New()
{
glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false)))
glog.Verbosity(LvlTrace)
if err := glog.BacktraceAt("logger_test.go:38"); err != nil {
t.Fatal(err)
}
logger.SetHandler(notimeHandler{glog})
}
logger.Trace("a message", "foo", "bar")
have := out.String()
want := `TRACE[01-01|01:00:00.000] a message foo=bar
`
if have != want {
t.Errorf("\nhave: '%v'\nwant: '%v'\n", have, want)
}
}
// TestLoggingWithTrace checks that if BackTraceAt is set, then the
// gloghandler is capable of spitting out a stacktrace
func TestLoggingWithTrace(t *testing.T) {
PrintOrigins(true)
defer PrintOrigins(false)
defer locationEnabled.Store(locationEnabled.Load())
out := new(bytes.Buffer)
logger := New()
{
glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false)))
glog.Verbosity(LvlTrace)
if err := glog.BacktraceAt("logger_test.go:59"); err != nil {
if err := glog.BacktraceAt("logger_test.go:42"); err != nil {
t.Fatal(err)
}
logger.SetHandler(notimeHandler{glog})
}
logger.Trace("a message", "foo", "bar")
logger.Trace("a message", "foo", "bar") // Will be bumped to INFO
have := out.String()
wantPrefix := `INFO [01-01|01:00:00.000|log/logger_test.go:59] a message