1 | module.exports = {
|
2 | createProtoTimestamps: logEntry => {
|
3 | if (logEntry && logEntry.entries && logEntry.entries.length > 0) {
|
4 | logEntry.entries = logEntry.entries.map(entry => {
|
5 | return {
|
6 | timestamp: {
|
7 | seconds: Math.floor(entry.ts / 1000),
|
8 | nanos: (entry.ts % 1000) * 1000000
|
9 | },
|
10 | line: entry.line
|
11 | }
|
12 | })
|
13 | }
|
14 | return logEntry
|
15 | },
|
16 | prepareJSONBatch: batch => {
|
17 | batch.streams = batch.streams.map(logEntry => {
|
18 | logEntry.stream = logEntry.labels
|
19 | logEntry.values = logEntry.entries
|
20 | logEntry.values = logEntry.values.map(entry => {
|
21 | return [JSON.stringify(entry.ts * 1000 * 1000), entry.line]
|
22 | })
|
23 | delete logEntry.entries
|
24 | delete logEntry.labels
|
25 | return logEntry
|
26 | })
|
27 | return batch
|
28 | },
|
29 | prepareProtoBatch: batch => {
|
30 | batch.streams = batch.streams.map(logEntry => {
|
31 | let protoLabels = `{level="${logEntry.labels.level}"`
|
32 | delete logEntry.labels.level
|
33 | for (let key in logEntry.labels) {
|
34 | protoLabels += `,${key}="${logEntry.labels[key]}"`
|
35 | }
|
36 | protoLabels += '}'
|
37 | logEntry.labels = protoLabels
|
38 | return logEntry
|
39 | })
|
40 | return batch
|
41 | }
|
42 | }
|