mirror of
https://github.com/cloudflare/cloudflared.git
synced 2026-06-23 04:10:20 +00:00
c0bc3bdbf0
Check / check (1.22.x, macos-latest) (push) Has been cancelled
Check / check (1.22.x, ubuntu-latest) (push) Has been cancelled
Check / check (1.22.x, windows-latest) (push) Has been cancelled
Semgrep config / semgrep/ci (push) Has been cancelled
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package protocol
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/getsentry/sentry-go/internal/ratelimit"
|
|
)
|
|
|
|
// LogAttribute is the JSON representation for a single log attribute value.
|
|
type LogAttribute struct {
|
|
Value any `json:"value"`
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
// Logs is a container for multiple log items which knows how to convert
|
|
// itself into a single batched log envelope item.
|
|
type Logs []TelemetryItem
|
|
|
|
func (ls Logs) ToEnvelopeItem() (*EnvelopeItem, error) {
|
|
// Convert each log to its JSON representation
|
|
items := make([]json.RawMessage, 0, len(ls))
|
|
for _, log := range ls {
|
|
logPayload, err := json.Marshal(log)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
items = append(items, logPayload)
|
|
}
|
|
|
|
if len(items) == 0 {
|
|
return nil, nil
|
|
}
|
|
|
|
wrapper := struct {
|
|
Items []json.RawMessage `json:"items"`
|
|
}{Items: items}
|
|
|
|
payload, err := json.Marshal(wrapper)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return NewLogItem(len(ls), payload), nil
|
|
}
|
|
|
|
func (Logs) GetCategory() ratelimit.Category { return ratelimit.CategoryLog }
|
|
func (Logs) GetEventID() string { return "" }
|
|
func (Logs) GetSdkInfo() *SdkInfo { return nil }
|
|
func (Logs) GetDynamicSamplingContext() map[string]string { return nil }
|