/
log.go
47 lines (39 loc) · 1.2 KB
/
log.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package presenter
import (
"code.cloudfoundry.org/go-loggregator/v8/rpc/loggregator_v2"
"code.cloudfoundry.org/korifi/api/repositories"
)
type LogCacheReadResponse struct {
Envelopes LogCacheReadResponseEnvelopes `json:"envelopes"`
}
type LogCacheReadResponseEnvelopes struct {
Batch []LogCacheReadResponseBatch `json:"batch"`
}
type LogCacheReadResponseBatch struct {
Timestamp int64 `json:"timestamp"`
Log LogCacheReadResponseLog `json:"log"`
Tags map[string]string `json:"tags,omitempty"`
}
type LogCacheReadResponseLog struct {
Payload []byte `json:"payload"`
Type loggregator_v2.Log_Type `json:"type"`
}
func ForLogs(logRecords []repositories.LogRecord) LogCacheReadResponse {
envelopes := make([]LogCacheReadResponseBatch, 0, len(logRecords))
for _, logRecord := range logRecords {
batch := LogCacheReadResponseBatch{
Timestamp: logRecord.Timestamp,
Log: LogCacheReadResponseLog{
Payload: []byte(logRecord.Message),
Type: loggregator_v2.Log_OUT,
},
Tags: logRecord.Tags,
}
envelopes = append(envelopes, batch)
}
return LogCacheReadResponse{
Envelopes: LogCacheReadResponseEnvelopes{
Batch: envelopes,
},
}
}