github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/lts/v2/streams/ListLogs.go (about) 1 package streams 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 ) 8 9 type ListLogsOpts struct { 10 GroupId string `json:"-" required:"true"` 11 StreamId string `json:"-" required:"true"` 12 // UTC start time of the search window (in milliseconds). 13 // NOTE: 14 // Maximum query time range: 30 days 15 StartTime string `json:"start_time" required:"true"` 16 // UTC end time of the search window (in milliseconds). 17 // NOTE: 18 // Maximum query time range: 30 days 19 EndTime string `json:"end_time" required:"true"` 20 // Filter criteria, which vary between log sources. 21 Labels map[string]string `json:"labels,omitempty"` 22 // Keyword used for search. A keyword is a word between two adjacent delimiters. 23 // Enumerated value: 24 // error 25 Keywords string `json:"keywords,omitempty"` 26 // Sequence number of a log event. This parameter is not required for the first query, but is required for subsequent pagination queries. The value can be obtained from the response of the last query. The value of line_num should be between the values of start_time and end_time. 27 // Value length: 19 characters 28 LineNum string `json:"line_num,omitempty"` 29 // Whether the search order is descending or ascending. The default value is false, indicating that search results are displayed in ascending order. 30 // Enumerated value: 31 // false 32 IsDesc *bool `json:"is_desc,omitempty"` 33 // The value is init (default value) for the first query, or forwards or backwards for a pagination query. This parameter is used together with is_desc for pagination queries. 34 // Enumerated value: 35 // forwards 36 SearchType string `json:"search_type,omitempty"` 37 // Number of logs to be queried each time. The value is 50 when this parameter is not set. You are advised to set this parameter to 100. 38 // 39 // Minimum value: 1 40 // Maximum value: 5000 41 Limit int32 `json:"limit,omitempty"` 42 } 43 44 func ListLogs(client *golangsdk.ServiceClient, opts ListLogsOpts) (*ListLogsResponse, error) { 45 b, err := build.RequestBody(opts, "") 46 if err != nil { 47 return nil, err 48 } 49 50 // POST /v2/{project_id}/groups/{log_group_id}/streams/{log_stream_id}/content/query 51 raw, err := client.Post(client.ServiceURL("groups", opts.GroupId, "streams", opts.StreamId, "content", "query"), b, nil, &golangsdk.RequestOpts{ 52 OkCodes: []int{200}, 53 }) 54 if err != nil { 55 return nil, err 56 } 57 58 var res ListLogsResponse 59 err = extract.Into(raw.Body, &res) 60 return &res, err 61 } 62 63 type ListLogsResponse struct { 64 Count int `json:"count,omitempty"` 65 Logs []LogContents `json:"logs,omitempty"` 66 } 67 68 type LogContents struct { 69 // Raw log data. 70 // Minimum length: 1 character 71 // Maximum length: 10,000 characters 72 Content string `json:"content,omitempty"` 73 // Sequence number of a log event. 74 // Value length: 19 characters 75 LineNum string `json:"line_num,omitempty"` 76 // Labels contained in a log event. The labels vary depending on log events. 77 Labels map[string]string `json:"labels,omitempty"` 78 }