You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							243 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							243 lines
						
					
					
						
							5.2 KiB
						
					
					
				'use strict'
 | 
						|
/* eslint no-prototype-builtins: 0 */
 | 
						|
 | 
						|
const { hostname } = require('os')
 | 
						|
const { test } = require('tap')
 | 
						|
const { sink, once } = require('./helper')
 | 
						|
const pino = require('../')
 | 
						|
 | 
						|
process.removeAllListeners('warning')
 | 
						|
 | 
						|
test('useLevelLabels', async ({ match, equal }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP001')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    useLevelLabels: true
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('hello world')
 | 
						|
  match(await o, { level: 'info' })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('changeLevelName', async ({ match, equal }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP002')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    changeLevelName: 'priority'
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('hello world')
 | 
						|
  match(await o, { priority: 30 })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('levelKey', async ({ match, equal }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP002')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    levelKey: 'priority'
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('hello world')
 | 
						|
  match(await o, { priority: 30 })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('useLevelLabels and changeLevelName', async ({ match, equal }) => {
 | 
						|
  let count = 0
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, count === 0 ? 'PINODEP001' : 'PINODEP002')
 | 
						|
    count += 1
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    changeLevelName: 'priority',
 | 
						|
    useLevelLabels: true
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('hello world')
 | 
						|
  match(await o, { priority: 'info' })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('pino.* serializer', async ({ match, equal, pass }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP003')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    serializers: {
 | 
						|
      [Symbol.for('pino.*')] (log) {
 | 
						|
        pass('called')
 | 
						|
        return log
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('hello world')
 | 
						|
  match(await o, { level: 30 })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('child(bindings.serializers)', async ({ match, equal, pass }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP004')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const parent = pino({ serializers: { test: () => 'parent' } }, stream)
 | 
						|
  const child = parent.child({
 | 
						|
    serializers: {
 | 
						|
      test () {
 | 
						|
        pass('called')
 | 
						|
        return 'child'
 | 
						|
      }
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  child.fatal({ test: 'test' })
 | 
						|
  match(await o, { test: 'child' })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('child(bindings.formatters)', async ({ match, equal, pass }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP005')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    formatters: {
 | 
						|
      level (label, number) {
 | 
						|
        return {
 | 
						|
          log: {
 | 
						|
            level: label
 | 
						|
          }
 | 
						|
        }
 | 
						|
      },
 | 
						|
      bindings (bindings) {
 | 
						|
        return {
 | 
						|
          process: {
 | 
						|
            pid: bindings.pid
 | 
						|
          },
 | 
						|
          host: {
 | 
						|
            name: bindings.hostname
 | 
						|
          }
 | 
						|
        }
 | 
						|
      },
 | 
						|
      log (obj) {
 | 
						|
        return { hello: 'world', ...obj }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }, stream)
 | 
						|
 | 
						|
  const child = logger.child({
 | 
						|
    foo: 'bar',
 | 
						|
    nested: { object: true },
 | 
						|
    formatters: {
 | 
						|
      bindings (bindings) {
 | 
						|
        pass('called')
 | 
						|
        return { ...bindings, faz: 'baz' }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  child.info('hello world')
 | 
						|
  match(await o, {
 | 
						|
    log: {
 | 
						|
      level: 'info'
 | 
						|
    },
 | 
						|
    process: {
 | 
						|
      pid: process.pid
 | 
						|
    },
 | 
						|
    host: {
 | 
						|
      name: hostname()
 | 
						|
    },
 | 
						|
    hello: 'world',
 | 
						|
    foo: 'bar',
 | 
						|
    nested: { object: true },
 | 
						|
    faz: 'baz'
 | 
						|
  })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('child(bindings.customLevels)', async ({ match, equal, pass }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP006')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino(stream).child({
 | 
						|
    childMsg: 'ok',
 | 
						|
    customLevels: {
 | 
						|
      foo: 35
 | 
						|
    }
 | 
						|
  }, {
 | 
						|
    formatters: {
 | 
						|
      level (label, number) {
 | 
						|
        if (label === 'foo' && number === 35) {
 | 
						|
          pass('using customLevels')
 | 
						|
        }
 | 
						|
        return { level: number }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.foo('test')
 | 
						|
  match(await o, {
 | 
						|
    level: 35,
 | 
						|
    childMsg: 'ok',
 | 
						|
    msg: 'test'
 | 
						|
  })
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 | 
						|
 | 
						|
test('child(bindings.level)', async ({ equal, pass }) => {
 | 
						|
  process.on('warning', onWarning)
 | 
						|
  function onWarning (warn) {
 | 
						|
    equal(warn.code, 'PINODEP007')
 | 
						|
  }
 | 
						|
 | 
						|
  const stream = sink()
 | 
						|
  const logger = pino({
 | 
						|
    level: 'info'
 | 
						|
  }, stream).child({
 | 
						|
    level: 'trace'
 | 
						|
  })
 | 
						|
 | 
						|
  const o = once(stream, 'data')
 | 
						|
  logger.info('test')
 | 
						|
  if (await o === null) {
 | 
						|
    pass('child can overrid parent level')
 | 
						|
  }
 | 
						|
  process.removeListener('warning', onWarning)
 | 
						|
})
 |