diff --git a/web/projects/ui/src/app/components/logs/logs.component.ts b/web/projects/ui/src/app/components/logs/logs.component.ts index 3d31313cb..8ce328f91 100644 --- a/web/projects/ui/src/app/components/logs/logs.component.ts +++ b/web/projects/ui/src/app/components/logs/logs.component.ts @@ -62,7 +62,7 @@ export class LogsComponent { | 'connected' | 'reconnecting' | 'disconnected' = 'connecting' - limit = 400 + limit = 200 count = 0 constructor( diff --git a/web/projects/ui/src/app/pages/diagnostic-routes/logs/logs.page.ts b/web/projects/ui/src/app/pages/diagnostic-routes/logs/logs.page.ts index 5119b9d93..976abc2a0 100644 --- a/web/projects/ui/src/app/pages/diagnostic-routes/logs/logs.page.ts +++ b/web/projects/ui/src/app/pages/diagnostic-routes/logs/logs.page.ts @@ -18,7 +18,7 @@ export class LogsPage { loading = true needInfinite = true startCursor?: string - limit = 200 + limit = 400 isOnBottom = true constructor( diff --git a/web/projects/ui/src/app/pages/init/logs/logs.service.ts b/web/projects/ui/src/app/pages/init/logs/logs.service.ts index e06d56b42..5fe550d45 100644 --- a/web/projects/ui/src/app/pages/init/logs/logs.service.ts +++ b/web/projects/ui/src/app/pages/init/logs/logs.service.ts @@ -35,7 +35,9 @@ function convertAnsi(entries: readonly any[]): string { @Injectable({ providedIn: 'root' }) export class LogsService extends Observable { private readonly api = inject(ApiService) - private readonly log$ = defer(() => this.api.initFollowLogs({})).pipe( + private readonly log$ = defer(() => + this.api.initFollowLogs({ boot: 0 }), + ).pipe( switchMap(({ guid }) => this.api.openWebsocket$(guid, {})), bufferTime(250), filter(logs => !!logs.length), diff --git a/web/projects/ui/src/app/services/api/api.types.ts b/web/projects/ui/src/app/services/api/api.types.ts index a5c52e9a2..256f6848b 100644 --- a/web/projects/ui/src/app/services/api/api.types.ts +++ b/web/projects/ui/src/app/services/api/api.types.ts @@ -70,7 +70,12 @@ export module RR { export type GetServerLogsReq = ServerLogsReq // server.logs & server.kernel-logs export type GetServerLogsRes = LogsRes - export type FollowServerLogsReq = { limit?: number } // server.logs.follow & server.kernel-logs.follow + // @param limit: BE default is 50 + // @param boot: number is offset (0: current, -1 prev, +1 first), string is a specific boot id, and null is all + export type FollowServerLogsReq = { + limit?: number + boot?: number | string | null + } // server.logs.follow & server.kernel-logs.follow export type FollowServerLogsRes = { startCursor: string guid: string diff --git a/web/projects/ui/src/app/services/api/embassy-live-api.service.ts b/web/projects/ui/src/app/services/api/embassy-live-api.service.ts index 8826b2883..b460e00ff 100644 --- a/web/projects/ui/src/app/services/api/embassy-live-api.service.ts +++ b/web/projects/ui/src/app/services/api/embassy-live-api.service.ts @@ -160,8 +160,10 @@ export class LiveApiService extends ApiService { return this.rpcRequest({ method: 'init.subscribe', params: {} }) } - async initFollowLogs(): Promise { - return this.rpcRequest({ method: 'init.logs.follow', params: {} }) + async initFollowLogs( + params: RR.FollowServerLogsReq, + ): Promise { + return this.rpcRequest({ method: 'init.logs.follow', params }) } // server @@ -379,8 +381,8 @@ export class LiveApiService extends ApiService { } async followPackageLogs( - params: RR.FollowServerLogsReq, - ): Promise { + params: RR.FollowPackageLogsReq, + ): Promise { return this.rpcRequest({ method: 'package.logs.follow', params }) }