diff --git a/logging/slog/logger.go b/logging/slog/logger.go index 8f19bf8..500a2b4 100644 --- a/logging/slog/logger.go +++ b/logging/slog/logger.go @@ -2,6 +2,7 @@ package slog import ( "fmt" + "io" "log/slog" ) @@ -71,3 +72,14 @@ func (w *Writer) Logger() *slog.Logger { func (w *Writer) Printf(format string, v ...interface{}) { w.log.Info(fmt.Sprintf(format, v...)) } + +func (w *Writer) SetLvel(level slog.Level) { + w.config.coreConfig.level.Set(level) + w.config.coreConfig.withLevel = true +} + +func (w *Writer) SetOutput(writer io.Writer) { + log := slog.New(NewTraceHandler(writer, w.config.coreConfig.opt, w.config.traceConfig)) + w.config.coreConfig.writer = writer + w.log = log +} diff --git a/logging/slog/logger_test.go b/logging/slog/logger_test.go index 24b8e70..c8a9015 100644 --- a/logging/slog/logger_test.go +++ b/logging/slog/logger_test.go @@ -81,7 +81,7 @@ func TestLogger(t *testing.T) { errSpan.End() } -func TestLogger1(t *testing.T) { +func TestLoggerBase(t *testing.T) { ctx := context.Background() buf := new(bytes.Buffer) @@ -89,17 +89,13 @@ func TestLogger1(t *testing.T) { shutdown := stdoutProvider(ctx) defer shutdown() - logger := logger.New( - NewWriter( - WithTraceErrorSpanLevel(slog.LevelWarn), - WithRecordStackTraceInSpan(true), - ), logger.Config{ - SlowThreshold: time.Millisecond, - LogLevel: logger.Warn, - Colorful: false, - }) + logger := NewWriter( + WithTraceErrorSpanLevel(slog.LevelWarn), + WithOutput(buf), + WithRecordStackTraceInSpan(true), + ) - logger.Info(ctx, "log from origin slog") + logger.log.InfoContext(ctx, "log from origin slog") assert.True(t, strings.Contains(buf.String(), "log from origin slog")) buf.Reset() @@ -107,9 +103,11 @@ func TestLogger1(t *testing.T) { ctx, span := tracer.Start(ctx, "root") - assert.True(t, strings.Contains(buf.String(), "trace_id")) - assert.True(t, strings.Contains(buf.String(), "span_id")) - assert.True(t, strings.Contains(buf.String(), "trace_flags")) + // TODO fix it + logger.log.WarnContext(ctx, "hello world") + assert.True(t, strings.Contains(buf.String(), "TraceID")) + assert.True(t, strings.Contains(buf.String(), "SpanID")) + assert.True(t, strings.Contains(buf.String(), "TraceFlags")) buf.Reset() span.End() @@ -131,14 +129,12 @@ func TestLogLevel(t *testing.T) { WithRecordStackTraceInSpan(true), ) - /* // output to buffer - logger.SetOutput(buf) + logger.SetOutput(buf) + logger.log.Debug("this is a debug log") + assert.False(t, strings.Contains(buf.String(), "this is a debug log")) - logger.Debug("this is a debug log") - assert.False(t, strings.Contains(buf.String(), "this is a debug log")) + logger.SetLvel(slog.LevelDebug) - logger.SetLevel(klog.LevelDebug) - */ logger.log.Debug("this is a debug log msg") assert.True(t, strings.Contains(buf.String(), "this is a debug log")) }