From 63976755745e0d0a0aa7ffc9365c34065386d289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 20 Jun 2026 19:27:17 +0800 Subject: [PATCH] Fix clash log API not respecting subscribed level --- log/observable.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/log/observable.go b/log/observable.go index 768942bd..efb2450e 100644 --- a/log/observable.go +++ b/log/observable.go @@ -111,23 +111,13 @@ type observableLogger struct { func (l *observableLogger) Log(ctx context.Context, level Level, args []any) { level = OverrideLevelFromContext(level, ctx) - if level > l.level && l.platformWriter == nil { + if level > l.level && l.platformWriter == nil && !l.needObservable { return } nowTime := time.Now() - if level <= l.level { - if l.needObservable { - message, messageSimple := l.formatter.FormatWithSimple(ctx, level, l.tag, F.ToString(args...), nowTime) - if level == LevelPanic { - panic(message) - } - l.writer.Write([]byte(message)) - if level == LevelFatal { - os.Exit(1) - } - l.subscriber.Emit(Entry{level, messageSimple}) - } else { - message := l.formatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime) + if l.needObservable { + message, messageSimple := l.formatter.FormatWithSimple(ctx, level, l.tag, F.ToString(args...), nowTime) + if level <= l.level { if level == LevelPanic { panic(message) } @@ -136,6 +126,16 @@ func (l *observableLogger) Log(ctx context.Context, level Level, args []any) { os.Exit(1) } } + l.subscriber.Emit(Entry{level, messageSimple}) + } else if level <= l.level { + message := l.formatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime) + if level == LevelPanic { + panic(message) + } + l.writer.Write([]byte(message)) + if level == LevelFatal { + os.Exit(1) + } } if l.platformWriter != nil { l.platformWriter.WriteMessage(level, l.platformFormatter.Format(ctx, level, l.tag, F.ToString(args...), nowTime))