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 {
|
func (s *sinkCore) Check(entry zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry {
|
||||||
if s.Enabled(entry.Level) {
|
// Delegate to inner core (tee) so each sub-core's level enabler is respected.
|
||||||
return ce.AddCore(entry, s)
|
// Then add ourselves for sink forwarding only.
|
||||||
|
ce = s.core.Check(entry, ce)
|
||||||
|
if ce != nil {
|
||||||
|
ce = ce.AddCore(entry, s)
|
||||||
}
|
}
|
||||||
return ce
|
return ce
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sinkCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
|
func (s *sinkCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
|
||||||
if err := s.core.Write(entry, fields); err != nil {
|
// Only handle sink forwarding — the inner cores write via their own
|
||||||
return err
|
// Write methods (added to CheckedEntry by s.core.Check above).
|
||||||
}
|
|
||||||
|
|
||||||
mu.RLock()
|
mu.RLock()
|
||||||
sink := currentSink
|
sink := currentSink
|
||||||
mu.RUnlock()
|
mu.RUnlock()
|
||||||
|
|||||||
@@ -8,37 +8,7 @@
|
|||||||
-- cache_creation_1h_tokens (defined in 001_init.sql)
|
-- cache_creation_1h_tokens (defined in 001_init.sql)
|
||||||
--
|
--
|
||||||
-- Migration 009 already copied data from legacy → canonical columns.
|
-- Migration 009 already copied data from legacy → canonical columns.
|
||||||
-- But upgraded instances may still have post-009 writes in legacy columns.
|
-- This migration drops the legacy columns to avoid confusion.
|
||||||
-- Backfill once more before dropping to prevent data loss.
|
|
||||||
|
|
||||||
DO $$
|
|
||||||
BEGIN
|
|
||||||
IF EXISTS (
|
|
||||||
SELECT 1
|
|
||||||
FROM information_schema.columns
|
|
||||||
WHERE table_schema = 'public'
|
|
||||||
AND table_name = 'usage_logs'
|
|
||||||
AND column_name = 'cache_creation5m_tokens'
|
|
||||||
) THEN
|
|
||||||
UPDATE usage_logs
|
|
||||||
SET cache_creation_5m_tokens = cache_creation5m_tokens
|
|
||||||
WHERE cache_creation_5m_tokens = 0
|
|
||||||
AND cache_creation5m_tokens <> 0;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
IF EXISTS (
|
|
||||||
SELECT 1
|
|
||||||
FROM information_schema.columns
|
|
||||||
WHERE table_schema = 'public'
|
|
||||||
AND table_name = 'usage_logs'
|
|
||||||
AND column_name = 'cache_creation1h_tokens'
|
|
||||||
) THEN
|
|
||||||
UPDATE usage_logs
|
|
||||||
SET cache_creation_1h_tokens = cache_creation1h_tokens
|
|
||||||
WHERE cache_creation_1h_tokens = 0
|
|
||||||
AND cache_creation1h_tokens <> 0;
|
|
||||||
END IF;
|
|
||||||
END $$;
|
|
||||||
|
|
||||||
ALTER TABLE usage_logs DROP COLUMN IF EXISTS cache_creation5m_tokens;
|
ALTER TABLE usage_logs DROP COLUMN IF EXISTS cache_creation5m_tokens;
|
||||||
ALTER TABLE usage_logs DROP COLUMN IF EXISTS cache_creation1h_tokens;
|
ALTER TABLE usage_logs DROP COLUMN IF EXISTS cache_creation1h_tokens;
|
||||||
|
|||||||
Reference in New Issue
Block a user