Skip to content

Commit 44d4c85

Browse files
committed
Implement search in tailing
1 parent 2e7d3a9 commit 44d4c85

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

pkg/koyeb/instances.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@ func NewInstanceCmd() *cobra.Command {
6868
return instanceHandler.Logs(ctx, cmd, since.Time, args)
6969
}),
7070
}
71-
logInstanceCmd.Flags().Var(&since, "since", "Only return logs after this specific date")
71+
logInstanceCmd.Flags().Var(&since, "since", "DEPRECATED. Use --tail --start-time instead.")
72+
logInstanceCmd.Flags().Bool("tail", false, "Tail logs if no --end-time is provided.")
73+
logInstanceCmd.Flags().StringP("start-time", "s", "", "Return logs after this date")
74+
logInstanceCmd.Flags().StringP("end-time", "e", "", "Return logs before this date")
75+
logInstanceCmd.Flags().String("regex-search", "", "Filter logs returned with this regex")
76+
logInstanceCmd.Flags().String("text-search", "", "Filter logs returned with this text")
77+
logInstanceCmd.Flags().String("order", "asc", "Order logs by `asc` or `desc`")
7278
instanceCmd.AddCommand(logInstanceCmd)
7379

7480
return instanceCmd

pkg/koyeb/instances_logs.go

+21-12
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,25 @@ func (h *InstanceHandler) Logs(ctx *CLIContext, cmd *cobra.Command, since time.T
2222
resp,
2323
)
2424
}
25-
logsQuery, err := ctx.LogsClient.NewWatchLogsQuery(
26-
"",
27-
"",
28-
"",
29-
instanceDetail.Instance.GetId(),
30-
since,
31-
GetBoolFlags(cmd, "full"),
32-
)
33-
if err != nil {
34-
return err
35-
}
36-
return logsQuery.PrintAll()
25+
26+
startStr := GetStringFlags(cmd, "start-time")
27+
endStr := GetStringFlags(cmd, "end-time")
28+
regex := GetStringFlags(cmd, "regex-search")
29+
text := GetStringFlags(cmd, "text-search")
30+
order := GetStringFlags(cmd, "order")
31+
tail := GetBoolFlags(cmd, "tail")
32+
output := GetStringFlags(cmd, "output")
33+
34+
return ctx.LogsClient.PrintLogs(ctx, LogsQuery{
35+
InstanceId: instanceDetail.Instance.GetId(),
36+
Start: startStr,
37+
End: endStr,
38+
Since: since,
39+
Regex: regex,
40+
Text: text,
41+
Order: order,
42+
Tail: tail,
43+
Output: output,
44+
Full: GetBoolFlags(cmd, "full"),
45+
})
3746
}

pkg/koyeb/logs.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ type WatchLogsQuery struct {
4747
serviceId string
4848
deploymentId string
4949
instanceId string
50+
regex string
51+
text string
5052
since time.Time
5153
full bool // Whether to display full IDs
5254
}
@@ -133,6 +135,8 @@ func (client *LogsAPIClient) PrintLogs(ctx *CLIContext, q LogsQuery) error {
133135
q.DeploymentId,
134136
q.InstanceId,
135137
end,
138+
q.Regex,
139+
q.Text,
136140
q.Full,
137141
)
138142
if err != nil {
@@ -188,12 +192,14 @@ func queryLogs(ctx *CLIContext, logsType, serviceId, deploymentId, instanceId st
188192
}
189193

190194
func (client *LogsAPIClient) NewWatchLogsQuery(
191-
logType string, serviceId string, deploymentId string, instanceId string, since time.Time, full bool,
195+
logType string, serviceId string, deploymentId string, instanceId string, since time.Time, regex, text string, full bool,
192196
) (*WatchLogsQuery, error) {
193197
query := &WatchLogsQuery{
194198
serviceId: serviceId,
195199
deploymentId: deploymentId,
196200
instanceId: instanceId,
201+
regex: regex,
202+
text: text,
197203
since: since,
198204
full: full,
199205
}
@@ -362,6 +368,12 @@ func (query *WatchLogsQuery) Execute() (chan WatchLogsEntry, error) {
362368
if !query.since.IsZero() {
363369
queryParams.Add("start", query.since.Format(time.RFC3339))
364370
}
371+
if query.regex != "" {
372+
queryParams.Add("regex", query.regex)
373+
}
374+
if query.text != "" {
375+
queryParams.Add("text", query.text)
376+
}
365377
query.url.RawQuery = queryParams.Encode()
366378

367379
conn, err := query.reconnect(true)

0 commit comments

Comments
 (0)