sc-winston-loki-beta
Version:
A Modified version of Winston transport for Grafana Loki
43 lines (42 loc) • 1.22 kB
JavaScript
module.exports = {
createProtoTimestamps: logEntry => {
if (logEntry && logEntry.entries && logEntry.entries.length > 0) {
logEntry.entries = logEntry.entries.map(entry => {
return {
timestamp: {
seconds: Math.floor(entry.ts / 1000),
nanos: (entry.ts % 1000) * 1000000
},
line: entry.line
}
})
}
return logEntry
},
prepareJSONBatch: batch => {
batch.streams = batch.streams.map(logEntry => {
logEntry.stream = logEntry.labels
logEntry.values = logEntry.entries
logEntry.values = logEntry.values.map(entry => {
return [JSON.stringify(entry.ts * 1000 * 1000), entry.line]
})
delete logEntry.entries
delete logEntry.labels
return logEntry
})
return batch
},
prepareProtoBatch: batch => {
batch.streams = batch.streams.map(logEntry => {
let protoLabels = `{level="${logEntry.labels.level}"`
delete logEntry.labels.level
for (let key in logEntry.labels) {
protoLabels += `,${key}="${logEntry.labels[key]}"`
}
protoLabels += '}'
logEntry.labels = protoLabels
return logEntry
})
return batch
}
}