Skip to content

Commit 9d947b7

Browse files
committed
Optimizations and improvements from PR feedback
1 parent bc46ba0 commit 9d947b7

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

hooks/slog/slog.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
package slog
55

66
import (
7-
"context"
87
"log/slog"
9-
"runtime"
10-
"time"
118

129
"github.com/sirupsen/logrus"
1310
)
@@ -69,14 +66,19 @@ func (h *SlogHook) Levels() []logrus.Level {
6966
// Fire sends entry to the underlying slog logger. The Time and Caller fields
7067
// of entry are ignored.
7168
func (h *SlogHook) Fire(entry *logrus.Entry) error {
69+
lvl := h.toSlogLevel(entry.Level).Level()
70+
if !h.logger.Handler().Enabled(entry.Context, lvl) {
71+
return nil
72+
}
7273
attrs := make([]any, 0, len(entry.Data))
7374
for k, v := range entry.Data {
7475
attrs = append(attrs, slog.Any(k, v))
7576
}
76-
var pcs [1]uintptr
77-
// skip 8 callers to get to the original logrus caller
78-
runtime.Callers(8, pcs[:])
79-
r := slog.NewRecord(time.Now(), h.toSlogLevel(entry.Level).Level(), entry.Message, pcs[0])
77+
var pc uintptr
78+
if entry.Caller != nil {
79+
pc = entry.Caller.PC
80+
}
81+
r := slog.NewRecord(entry.Time, lvl, entry.Message, pc)
8082
r.Add(attrs...)
81-
return h.logger.Handler().Handle(context.Background(), r)
83+
return h.logger.Handler().Handle(entry.Context, r)
8284
}

hooks/slog/slog_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ func TestSlogHook_source(t *testing.T) {
150150
}))
151151
log := logrus.New()
152152
log.Out = io.Discard
153+
log.ReportCaller = true
153154
log.AddHook(NewSlogHook(slogLogger))
154155
log.Info("info with source")
155156
got := strings.TrimSpace(buf.String())

0 commit comments

Comments
 (0)