fix: 修复日志重复输出及清理冗余迁移逻辑
- logger: sinkCore 包装 tee core 时绕过了子 core 的 Check 级别过滤, 导致每条日志同时写入 stdout 和 stderr,表现为启动日志重复显示。 修复为正确委托 Check 给内部 tee core,sinkCore.Write 仅负责 sink 转发。 - migration 054: 移除冗余的遗留列回填逻辑,migration 009 已完成数据迁移, 直接删除遗留列即可。
This commit is contained in:
@@ -351,17 +351,18 @@ func (s *sinkCore) With(fields []zapcore.Field) zapcore.Core {
|
||||
}
|
||||
|
||||
func (s *sinkCore) Check(entry zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry {
|
||||
if s.Enabled(entry.Level) {
|
||||
return ce.AddCore(entry, s)
|
||||
// Delegate to inner core (tee) so each sub-core's level enabler is respected.
|
||||
// Then add ourselves for sink forwarding only.
|
||||
ce = s.core.Check(entry, ce)
|
||||
if ce != nil {
|
||||
ce = ce.AddCore(entry, s)
|
||||
}
|
||||
return ce
|
||||
}
|
||||
|
||||
func (s *sinkCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
|
||||
if err := s.core.Write(entry, fields); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Only handle sink forwarding — the inner cores write via their own
|
||||
// Write methods (added to CheckedEntry by s.core.Check above).
|
||||
mu.RLock()
|
||||
sink := currentSink
|
||||
mu.RUnlock()
|
||||
|
||||
Reference in New Issue
Block a user