You've already forked VptPassiveAdapter
Compare commits
4 Commits
7d587eac46
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 1dde8fb172 | |||
| 5be16406e4 | |||
| b3cd5f4809 | |||
| 763e0d0382 |
+3
-1
@@ -1,4 +1,6 @@
|
||||
dist/
|
||||
.idea/
|
||||
.exe
|
||||
.claude
|
||||
.claude
|
||||
.gocache
|
||||
.gomodcache
|
||||
+7
-1
@@ -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
|
||||
|
||||
@@ -60,6 +60,10 @@ func RegisterVIIDRoutes(r *gin.Engine) {
|
||||
sys.POST("/UnRegister", HandleUnRegister)
|
||||
sys.GET("/Time", HandleSystemTime)
|
||||
}
|
||||
extend := viid.Group("/Extend")
|
||||
{
|
||||
extend.POST("/SceneCapture", HandleSceneCapture)
|
||||
}
|
||||
viid.POST("/Faces", HandleUploadFaces)
|
||||
}
|
||||
}
|
||||
@@ -78,6 +82,10 @@ func HandleUnRegister(c *gin.Context) {
|
||||
proxyHelper(c, "/VIID/System/UnRegister")
|
||||
}
|
||||
|
||||
func HandleSceneCapture(c *gin.Context) {
|
||||
proxyHelper(c, "/VIID/Extend/SceneCapture")
|
||||
}
|
||||
|
||||
func proxyHelper(c *gin.Context, path string) {
|
||||
resp, err := ProxyRequest(c.Request.Context(), c.Request.Method, path, c.Request.Body, c.Request.Header)
|
||||
if err != nil {
|
||||
|
||||
@@ -39,3 +39,5 @@ preview:
|
||||
resolutions:
|
||||
- 720
|
||||
- 1080
|
||||
log:
|
||||
level: "info" # debug/info/warn/error,排查问题时可临时改为 debug
|
||||
|
||||
@@ -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
@@ -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...)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user