package vo type LogSystemPage[T LogSystemVo | LogHysteria2Vo] struct { LogSystemVos []T `json:"records"` Total int64 `json:"total"` } // LogSystemVo — строка журнала админки в том виде, в каком её пишет // middleware.LogHandler. // // Поля reqUri здесь нет намеренно: RequestURI несёт query string, а по // машинному endpoint'у в ней приезжает действующий machine token. Логируется // путь и, отдельно, имена переданных query-параметров без значений. type LogSystemVo struct { ClientIP string `json:"clientIp"` LatencyTime int64 `json:"latencyTime"` Level string `json:"level"` Msg string `json:"msg"` ReqMethod string `json:"reqMethod"` ReqPath string `json:"reqPath"` ReqQueryKeys string `json:"reqQueryKeys"` StatusCode int64 `json:"statusCode"` Time string `json:"time"` } // LogHysteria2Vo — строка журнала Hysteria в том виде, в каком её показывает // панель. // // Тип НЕ является формой upstream-записи и никогда не разбирается прямым // json.Unmarshal: JSON-логгер Hysteria 2.12.2 пишет `time` числом // (zapcore.EpochMillisTimeEncoder), и попытка сложить его в строковое поле // роняла разбор целиком. Форма провода живёт в service/journal.go, здесь — // только результат. type LogHysteria2Vo struct { Level string `json:"level"` Msg string `json:"msg"` Time string `json:"time"` }