@@ -45,6 +45,10 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
4545 }
4646
4747 files <- kubernetesCorePodLogsExtract (ctx , client , item , s [id ].Name )
48+
49+ if s [id ].RestartCount > 0 {
50+ files <- kubernetesPreviousCorePodLogsExtract (ctx , client , item , s [id ].Name )
51+ }
4852 }
4953 }
5054
@@ -55,6 +59,10 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
5559 }
5660
5761 files <- kubernetesCorePodLogsExtract (ctx , client , item , s [id ].Name )
62+
63+ if s [id ].RestartCount > 0 {
64+ files <- kubernetesPreviousCorePodLogsExtract (ctx , client , item , s [id ].Name )
65+ }
5866 }
5967 }
6068
@@ -65,12 +73,40 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
6573 }
6674
6775 files <- kubernetesCorePodLogsExtract (ctx , client , item , s [id ].Name )
76+
77+ if s [id ].RestartCount > 0 {
78+ files <- kubernetesPreviousCorePodLogsExtract (ctx , client , item , s [id ].Name )
79+ }
6880 }
6981 }
7082
7183 return nil
7284}
7385
86+ func kubernetesPreviousCorePodLogsExtract (ctx context.Context , client kclient.Client , item * core.Pod , container string ) shared.File {
87+ return shared .NewFile (fmt .Sprintf ("logs/container/%s.previous" , container ), func () ([]byte , error ) {
88+ res := client .Kubernetes ().CoreV1 ().Pods (item .GetNamespace ()).GetLogs (item .GetName (), & core.PodLogOptions {
89+ Container : container ,
90+ Timestamps : true ,
91+ Previous : true ,
92+ })
93+
94+ q , err := res .Stream (ctx )
95+ if err != nil {
96+ return nil , err
97+ }
98+
99+ defer q .Close ()
100+
101+ d , err := io .ReadAll (q )
102+ if err != nil {
103+ return nil , err
104+ }
105+
106+ return d , nil
107+ })
108+ }
109+
74110func kubernetesCorePodLogsExtract (ctx context.Context , client kclient.Client , item * core.Pod , container string ) shared.File {
75111 return shared .NewFile (fmt .Sprintf ("logs/container/%s" , container ), func () ([]byte , error ) {
76112 res := client .Kubernetes ().CoreV1 ().Pods (item .GetNamespace ()).GetLogs (item .GetName (), & core.PodLogOptions {
0 commit comments