输出消息改为中文

This commit is contained in:
2025-09-12 14:54:07 +08:00
parent 588c819c3c
commit 41bbe69442
7 changed files with 55 additions and 55 deletions

View File

@@ -20,9 +20,9 @@ func captureOutput(cfg config.LogConfig) (*logs.Logger, *bytes.Buffer) {
var buf bytes.Buffer
// 使用一个简单的 Console Encoder 进行测试,方便断言字符串
encoderConfig := zap.NewDevelopmentEncoderConfig()
encoderConfig.EncodeTime = nil // 忽略时间,避免测试结果不一致
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
encoderConfig.EncodeCaller = nil // 忽略调用者信息
encoderConfig.EncodeTime = nil // 忽略时间,避免测试结果不一致
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder // 日志级别大写
encoderConfig.EncodeCaller = nil // 忽略调用者信息
encoder := zapcore.NewConsoleEncoder(encoderConfig)
writer := zapcore.AddSync(&buf)
@@ -39,7 +39,7 @@ func captureOutput(cfg config.LogConfig) (*logs.Logger, *bytes.Buffer) {
}
func TestNewLogger(t *testing.T) {
t.Run("Constructor does not panic", func(t *testing.T) {
t.Run("构造函数不会 panic", func(t *testing.T) {
// 测试 Console 格式
cfgConsole := config.LogConfig{Level: "info", Format: "console"}
assert.NotPanics(t, func() { logs.NewLogger(cfgConsole) })
@@ -68,7 +68,7 @@ func TestLogger_Write_ForGin(t *testing.T) {
assert.NoError(t, err)
output := buf.String()
// logger.Write 会将 gin 的日志转为 info 级别
assert.Contains(t, output, "INFO")
assert.Contains(t, output, "INFO", "应包含 INFO 级别")
assert.Contains(t, output, strings.TrimSpace(ginLog))
}
@@ -84,7 +84,7 @@ func TestGormLogger(t *testing.T) {
return sql, rows
}
t.Run("Slow Query", func(t *testing.T) {
t.Run("慢查询", func(t *testing.T) {
buf.Reset()
// 模拟一个耗时超过 200ms 的查询
begin := time.Now().Add(-300 * time.Millisecond)
@@ -92,37 +92,37 @@ func TestGormLogger(t *testing.T) {
output := buf.String()
assert.Contains(t, output, "WARN", "应包含 WARN 级别")
assert.Contains(t, output, "[GORM] slow query", "应包含慢查询信息")
assert.Contains(t, output, "[GORM] 慢查询", "应包含慢查询信息")
// 修复:不再检查严格的 JSON 格式,只检查关键内容
assert.Contains(t, output, "SELECT * FROM users WHERE id = 1", "应包含 SQL 语句")
})
t.Run("Error Query", func(t *testing.T) {
t.Run("错误查询", func(t *testing.T) {
buf.Reset()
queryError := errors.New("syntax error")
queryError := errors.New("语法错误")
gormLogger.Trace(ctx, time.Now(), fc, queryError)
output := buf.String()
assert.Contains(t, output, "ERROR")
assert.Contains(t, output, "[GORM] error: syntax error")
assert.Contains(t, output, "ERROR", "应包含 ERROR 级别")
assert.Contains(t, output, "[GORM] 错误: 语法错误", "应包含 GORM 错误信息")
})
t.Run("Record Not Found Error is Skipped", func(t *testing.T) {
t.Run("记录未找到错误被跳过", func(t *testing.T) {
buf.Reset()
queryError := errors.New("record not found") // 模拟 GORM 的 RecordNotFound 错误
queryError := errors.New("记录未找到") // 模拟 GORM 的 RecordNotFound 错误
gormLogger.Trace(ctx, time.Now(), fc, queryError)
// 在修复 logs.go 中的 bug 后,这里应该为空
assert.Empty(t, buf.String(), "开启 SkipErrRecordNotFound 后record not found 错误不应产生任何日志")
})
t.Run("Normal Query", func(t *testing.T) {
t.Run("正常查询", func(t *testing.T) {
buf.Reset()
// 模拟一个快速查询
gormLogger.Trace(ctx, time.Now(), fc, nil)
output := buf.String()
assert.Contains(t, output, "DEBUG") // 正常查询是 Debug 级别
assert.Contains(t, output, "[GORM] trace")
assert.Contains(t, output, "DEBUG", "正常查询应为 DEBUG 级别")
assert.Contains(t, output, "[GORM] 追踪", "应包含 GORM 追踪信息")
})
}

View File

@@ -67,7 +67,7 @@ func (tq *TaskQueue) AddTask(task Task) {
priority: task.GetPriority(),
}
heap.Push(tq.queue, item)
tq.logger.Infow("任务已添加到队列", "taskID", task.GetID())
tq.logger.Infow("任务已添加到队列", "任务ID", task.GetID())
}
// GetNextTask 获取下一个要执行的任务(优先级最高的任务)
@@ -80,7 +80,7 @@ func (tq *TaskQueue) GetNextTask() Task {
}
item := heap.Pop(tq.queue).(*taskItem)
tq.logger.Infow("从队列中获取任务", "taskID", item.task.GetID())
tq.logger.Infow("从队列中获取任务", "任务ID", item.task.GetID())
return item.task
}
@@ -160,7 +160,7 @@ func NewExecutor(workers int, logger *logs.Logger) *Executor {
// Start 启动任务执行器
func (e *Executor) Start() {
e.logger.Infow("正在启动任务执行器", "workers", e.workers)
e.logger.Infow("正在启动任务执行器", "工作协程数", e.workers)
// 启动工作协程
for i := 0; i < e.workers; i++ {
@@ -187,31 +187,31 @@ func (e *Executor) Stop() {
// SubmitTask 提交任务到执行器
func (e *Executor) SubmitTask(task Task) {
e.taskQueue.AddTask(task)
e.logger.Infow("任务已提交", "taskID", task.GetID())
e.logger.Infow("任务已提交", "任务ID", task.GetID())
}
// worker 工作协程
func (e *Executor) worker(id int) {
defer e.wg.Done()
e.logger.Infow("工作协程已启动", "workerID", id)
e.logger.Infow("工作协程已启动", "工作协程ID", id)
for {
select {
case <-e.ctx.Done():
e.logger.Infow("工作协程已停止", "workerID", id)
e.logger.Infow("工作协程已停止", "工作协程ID", id)
return
default:
// 获取下一个任务
task := e.taskQueue.GetNextTask()
if task != nil {
e.logger.Infow("工作协程正在执行任务", "workerID", id, "taskID", task.GetID())
e.logger.Infow("工作协程正在执行任务", "工作协程ID", id, "任务ID", task.GetID())
// 执行任务
if err := task.Execute(); err != nil {
e.logger.Errorw("任务执行失败", "workerID", id, "taskID", task.GetID(), "error", err)
e.logger.Errorw("任务执行失败", "工作协程ID", id, "任务ID", task.GetID(), "错误", err)
} else {
e.logger.Infow("任务执行成功", "workerID", id, "taskID", task.GetID())
e.logger.Infow("任务执行成功", "工作协程ID", id, "任务ID", task.GetID())
}
} else {
// 没有任务时短暂休眠

View File

@@ -60,7 +60,7 @@ func (m *MockTask) ExecutedCount() int32 {
return atomic.LoadInt32(&m.executed)
}
// --- Helper function for robust waiting ---
// --- 健壮等待的辅助函数 ---
func waitForWaitGroup(t *testing.T, wg *sync.WaitGroup, timeout time.Duration) {
waitChan := make(chan struct{})
go func() {
@@ -70,13 +70,13 @@ func waitForWaitGroup(t *testing.T, wg *sync.WaitGroup, timeout time.Duration) {
select {
case <-waitChan:
// Wait succeeded
// 等待成功
case <-time.After(timeout):
t.Fatal("timed out waiting for tasks to complete")
t.Fatal("等待任务完成超时")
}
}
// --- TaskQueue Tests (No changes needed) ---
// --- 任务队列测试 (无需更改) ---
func TestNewTaskQueue(t *testing.T) {
tq := task.NewTaskQueue(testLogger)
@@ -92,7 +92,7 @@ func TestTaskQueue_AddTask(t *testing.T) {
assert.Equal(t, 1, tq.GetTaskCount(), "添加任务后,队列中的任务数应为 1")
}
// ... (other TaskQueue tests remain the same)
// ... (其他任务队列测试保持不变)
func TestTaskQueue_GetNextTask(t *testing.T) {
t.Run("从空队列获取任务", func(t *testing.T) {
tq := task.NewTaskQueue(testLogger)
@@ -157,7 +157,7 @@ func TestTaskQueue_Concurrency(t *testing.T) {
assert.Equal(t, 0, tq.GetTaskCount(), "并发获取所有任务后,队列应为空")
}
// --- Executor Tests (Refactored for reliability) ---
// --- 执行器测试 (为可靠性重构) ---
func TestNewExecutor(t *testing.T) {
executor := task.NewExecutor(5, testLogger)
@@ -294,7 +294,7 @@ func TestExecutor_StopWithPendingTasks(t *testing.T) {
case <-task1Started:
// task1 已开始,可以安全地停止执行器了
case <-time.After(1 * time.Second):
t.Fatal("timed out waiting for task1 to start")
t.Fatal("等待 task1 启动超时")
}
executor.Stop()