This commit is contained in:
2026-07-02 20:19:33 +08:00
parent 5be16406e4
commit 1dde8fb172
5 changed files with 46 additions and 5 deletions
+7 -1
View File
@@ -31,6 +31,7 @@ func SyncTask() ([]dto.Task, error) {
logger.Error("序列化JSON失败", zap.Error(err))
return nil, err
}
logger.Debug("发起任务同步请求", zap.String("url", url), zap.String("requestBody", string(jsonData)))
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
logger.Error("创建请求失败", zap.Error(err))
@@ -48,6 +49,9 @@ func SyncTask() ([]dto.Task, error) {
logger.Error("读取响应体失败", zap.Error(err))
return nil, err
}
logger.Debug("任务同步响应",
zap.Int("httpStatusCode", resp.StatusCode),
zap.String("responseBody", string(body)))
// 解析响应体为 map
var response dto.TaskListResponse
@@ -59,7 +63,9 @@ func SyncTask() ([]dto.Task, error) {
return nil, err
}
if response.Code != 200 {
logger.Error("响应错误码", zap.Int("code", response.Code))
logger.Error("响应错误码",
zap.Int("code", response.Code),
zap.String("msg", response.Msg))
return nil, fmt.Errorf(response.Msg)
}
return response.Data, nil
+2
View File
@@ -39,3 +39,5 @@ preview:
resolutions:
- 720
- 1080
log:
level: "info" # debug/info/warn/error,排查问题时可临时改为 debug
+6
View File
@@ -70,6 +70,11 @@ type PreviewConfig struct {
HwAccel string `mapstructure:"hwaccel"`
}
type LogConfig struct {
// Level 日志级别:debug/info/warn/error,默认 info。排查问题时可临时改为 debug。
Level string `mapstructure:"level"`
}
type MainConfig struct {
Api ApiConfig `mapstructure:"api"`
Record RecordConfig `mapstructure:"record"`
@@ -79,4 +84,5 @@ type MainConfig struct {
DisconnectAction DisconnectActionConfig `mapstructure:"disconnectAction"`
Preview PreviewConfig `mapstructure:"preview"`
AddSilentAudio bool `mapstructure:"addSilentAudio"`
Log LogConfig `mapstructure:"log"`
}
+18 -4
View File
@@ -8,6 +8,9 @@ import (
var Logger *zap.Logger
// atomicLevel 持有当前生效的日志级别,支持在配置加载完成后动态调整(无需重建 Logger)
var atomicLevel = zap.NewAtomicLevelAt(zap.InfoLevel)
func Init() error {
config := zap.NewProductionConfig()
config.OutputPaths = []string{"stdout"}
@@ -25,9 +28,6 @@ func Init() error {
// 创建写入器
w := zapcore.AddSync(lumberJackLogger)
// 设置日志级别
level := zap.NewAtomicLevelAt(zap.InfoLevel)
// 创建编码器配置
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.TimeKey = "time"
@@ -41,7 +41,7 @@ func Init() error {
encoder := zapcore.NewConsoleEncoder(encoderConfig)
// 创建核心
core := zapcore.NewCore(encoder, w, level)
core := zapcore.NewCore(encoder, w, atomicLevel)
// 创建日志记录器
Logger = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
@@ -49,6 +49,20 @@ func Init() error {
return nil
}
// SetLevel 动态调整日志级别,可在配置文件加载完成后调用(例如开启 debug 日志排查问题)。
// levelStr 支持 debug/info/warn/error 等,为空或非法值时保持当前级别不变并返回错误。
func SetLevel(levelStr string) error {
if levelStr == "" {
return nil
}
var level zapcore.Level
if err := level.UnmarshalText([]byte(levelStr)); err != nil {
return err
}
atomicLevel.SetLevel(level)
return nil
}
func Info(message string, fields ...zap.Field) {
Logger.Info(message, fields...)
}
+13
View File
@@ -192,6 +192,7 @@ func runTaskLoop(ctx context.Context) {
return
case <-ticker.C:
// 执行任务
logger.Debug("开始同步任务", zap.Int("deviceCount", len(config.Config.Devices)))
tasks, err := api.SyncTask()
if err != nil {
var connErr *api.ConnError
@@ -230,6 +231,7 @@ func runTaskLoop(ctx context.Context) {
firstFailureTime = time.Time{}
commandExecuted = false
}
logger.Debug("同步任务完成", zap.Int("taskCount", len(tasks)))
for _, task := range tasks {
logger.Info("开始处理任务",
zap.String("taskID", task.TaskID),
@@ -237,13 +239,20 @@ func runTaskLoop(ctx context.Context) {
zap.String("startTime", task.StartTime.Format("2006-01-02 15:04:05")),
zap.String("endTime", task.EndTime.Format("2006-01-02 15:04:05")))
// 处理任务
matched := false
for _, device := range config.Config.Devices {
if device.DeviceNo == task.DeviceNo {
matched = true
// 处理任务
go startTask(device, task)
break // 提前返回,避免不必要的循环
}
}
if !matched {
logger.Warn("任务的设备编号未匹配到任何已配置设备,任务被跳过",
zap.String("taskID", task.TaskID),
zap.String("deviceNo", task.DeviceNo))
}
}
}
}
@@ -283,6 +292,10 @@ func main() {
logger.Fatal("加载配置文件失败", zap.Error(err))
return
}
if err := logger.SetLevel(config.Config.Log.Level); err != nil {
logger.Warn("日志级别配置无效,使用默认级别",
zap.String("level", config.Config.Log.Level), zap.Error(err))
}
ctx := context.Background()
shutdown, err := telemetry.InitTelemetry(ctx)
if err != nil {