All files / packages/logger/src/format/plugins logstash.ts

0% Statements 0/17
0% Branches 0/1
0% Functions 0/1
0% Lines 0/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                         
import jsonStringify from 'safe-stable-stringify'
import { MESSAGE } from '../../triple-beam'
import format from '../format'
 
/*
 * function logstash (info)
 * Returns a new instance of the LogStash Format that turns a
 * log `info` object into pure JSON with the appropriate logstash
 * options. This was previously exposed as { logstash: true }
 * to transports in `winston < 3.0.0`.
 */
export default format((info) => {
  const logstash: Record<string, any> = {}
 
  if (info.message) {
    logstash['@message'] = info.message
    delete info.message
  }
 
  if (info.timestamp) {
    logstash['@timestamp'] = info.timestamp
    delete info.timestamp
  }
 
  logstash['@fields'] = info
  info[MESSAGE] = jsonStringify(logstash)
  return info
})