Fix clash log API not respecting subscribed level

This commit is contained in:
世界
2026-06-20 19:27:17 +08:00
parent 7d847c0583
commit 6397675574

View File

@@ -111,13 +111,13 @@ type observableLogger struct {
func (l *observableLogger) Log(ctx context.Context, level Level, args []any) { func (l *observableLogger) Log(ctx context.Context, level Level, args []any) {
level = OverrideLevelFromContext(level, ctx) level = OverrideLevelFromContext(level, ctx)
if level > l.level && l.platformWriter == nil { if level > l.level && l.platformWriter == nil && !l.needObservable {
return return
} }
nowTime := time.Now() nowTime := time.Now()
if level <= l.level {
if l.needObservable { if l.needObservable {
message, messageSimple := l.formatter.FormatWithSimple(ctx, level, l.tag, F.ToString(args...), nowTime) message, messageSimple := l.formatter.FormatWithSimple(ctx, level, l.tag, F.ToString(args...), nowTime)
if level <= l.level {
if level == LevelPanic { if level == LevelPanic {
panic(message) panic(message)
} }
@@ -125,8 +125,9 @@ func (l *observableLogger) Log(ctx context.Context, level Level, args []any) {
if level == LevelFatal { if level == LevelFatal {
os.Exit(1) os.Exit(1)
} }
}
l.subscriber.Emit(Entry{level, messageSimple}) l.subscriber.Emit(Entry{level, messageSimple})
} else { } else if level <= l.level {
message := l.formatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime) message := l.formatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime)
if level == LevelPanic { if level == LevelPanic {
panic(message) panic(message)
@@ -136,7 +137,6 @@ func (l *observableLogger) Log(ctx context.Context, level Level, args []any) {
os.Exit(1) os.Exit(1)
} }
} }
}
if l.platformWriter != nil { if l.platformWriter != nil {
l.platformWriter.WriteMessage(level, l.platformFormatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime)) l.platformWriter.WriteMessage(level, l.platformFormatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime))
} }