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  }