@@ -45,6 +45,10 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
45
45
}
46
46
47
47
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
+ }
48
52
}
49
53
}
50
54
@@ -55,6 +59,10 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
55
59
}
56
60
57
61
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
+ }
58
66
}
59
67
}
60
68
@@ -65,12 +73,40 @@ func kubernetesCorePodLogs(ctx context.Context, logger zerolog.Logger, client kc
65
73
}
66
74
67
75
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
+ }
68
80
}
69
81
}
70
82
71
83
return nil
72
84
}
73
85
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
+
74
110
func kubernetesCorePodLogsExtract (ctx context.Context , client kclient.Client , item * core.Pod , container string ) shared.File {
75
111
return shared .NewFile (fmt .Sprintf ("logs/container/%s" , container ), func () ([]byte , error ) {
76
112
res := client .Kubernetes ().CoreV1 ().Pods (item .GetNamespace ()).GetLogs (item .GetName (), & core.PodLogOptions {
0 commit comments