You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
82 lines
1.7 KiB
package log |
|
|
|
import ( |
|
"context" |
|
"io" |
|
"os" |
|
"testing" |
|
) |
|
|
|
func TestHelper(t *testing.T) { |
|
logger := With(DefaultLogger, "ts", DefaultTimestamp, "caller", DefaultCaller) |
|
log := NewHelper(logger) |
|
|
|
log.Log(LevelDebug, "msg", "test debug") |
|
log.Debug("test debug") |
|
log.Debugf("test %s", "debug") |
|
log.Debugw("log", "test debug") |
|
|
|
log.Warn("test warn") |
|
log.Warnf("test %s", "warn") |
|
log.Warnw("log", "test warn") |
|
} |
|
|
|
func TestHelperWithMsgKey(t *testing.T) { |
|
logger := With(DefaultLogger, "ts", DefaultTimestamp, "caller", DefaultCaller) |
|
log := NewHelper(logger, WithMessageKey("message")) |
|
log.Debugf("test %s", "debug") |
|
log.Debugw("log", "test debug") |
|
} |
|
|
|
func TestHelperLevel(t *testing.T) { |
|
log := NewHelper(DefaultLogger) |
|
log.Debug("test debug") |
|
log.Info("test info") |
|
log.Infof("test %s", "info") |
|
log.Warn("test warn") |
|
log.Error("test error") |
|
log.Errorf("test %s", "error") |
|
log.Errorw("log", "test error") |
|
} |
|
|
|
func BenchmarkHelperPrint(b *testing.B) { |
|
log := NewHelper(NewStdLogger(io.Discard)) |
|
for i := 0; i < b.N; i++ { |
|
log.Debug("test") |
|
} |
|
} |
|
|
|
func BenchmarkHelperPrintf(b *testing.B) { |
|
log := NewHelper(NewStdLogger(io.Discard)) |
|
for i := 0; i < b.N; i++ { |
|
log.Debugf("%s", "test") |
|
} |
|
} |
|
|
|
func BenchmarkHelperPrintw(b *testing.B) { |
|
log := NewHelper(NewStdLogger(io.Discard)) |
|
for i := 0; i < b.N; i++ { |
|
log.Debugw("key", "value") |
|
} |
|
} |
|
|
|
type traceKey struct{} |
|
|
|
func TestContext(t *testing.T) { |
|
logger := With(NewStdLogger(os.Stdout), |
|
"trace", Trace(), |
|
) |
|
log := NewHelper(logger) |
|
ctx := context.WithValue(context.Background(), traceKey{}, "2233") |
|
log.WithContext(ctx).Info("got trace!") |
|
} |
|
|
|
func Trace() Valuer { |
|
return func(ctx context.Context) interface{} { |
|
s, ok := ctx.Value(traceKey{}).(string) |
|
if !ok { |
|
return nil |
|
} |
|
return s |
|
} |
|
}
|
|
|