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.
		
		
		
		
		
			
		
			
				
					107 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					107 lines
				
				2.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const os = require('os')
							 | 
						||
| 
								 | 
							
								const { test } = require('tap')
							 | 
						||
| 
								 | 
							
								const pino = require('../')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const { pid } = process
							 | 
						||
| 
								 | 
							
								const hostname = os.hostname()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('metadata works', async ({ ok, same, equal }) => {
							 | 
						||
| 
								 | 
							
								  const now = Date.now()
							 | 
						||
| 
								 | 
							
								  const instance = pino({}, {
							 | 
						||
| 
								 | 
							
								    [Symbol.for('pino.metadata')]: true,
							 | 
						||
| 
								 | 
							
								    write (chunk) {
							 | 
						||
| 
								 | 
							
								      equal(instance, this.lastLogger)
							 | 
						||
| 
								 | 
							
								      equal(30, this.lastLevel)
							 | 
						||
| 
								 | 
							
								      equal('a msg', this.lastMsg)
							 | 
						||
| 
								 | 
							
								      ok(Number(this.lastTime) >= now)
							 | 
						||
| 
								 | 
							
								      same(this.lastObj, { hello: 'world', msg: 'a msg' })
							 | 
						||
| 
								 | 
							
								      const result = JSON.parse(chunk)
							 | 
						||
| 
								 | 
							
								      ok(new Date(result.time) <= new Date(), 'time is greater than Date.now()')
							 | 
						||
| 
								 | 
							
								      delete result.time
							 | 
						||
| 
								 | 
							
								      same(result, {
							 | 
						||
| 
								 | 
							
								        pid,
							 | 
						||
| 
								 | 
							
								        hostname,
							 | 
						||
| 
								 | 
							
								        level: 30,
							 | 
						||
| 
								 | 
							
								        hello: 'world',
							 | 
						||
| 
								 | 
							
								        msg: 'a msg'
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  instance.info({ hello: 'world' }, 'a msg')
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('child loggers works', async ({ ok, same, equal }) => {
							 | 
						||
| 
								 | 
							
								  const instance = pino({}, {
							 | 
						||
| 
								 | 
							
								    [Symbol.for('pino.metadata')]: true,
							 | 
						||
| 
								 | 
							
								    write (chunk) {
							 | 
						||
| 
								 | 
							
								      equal(child, this.lastLogger)
							 | 
						||
| 
								 | 
							
								      equal(30, this.lastLevel)
							 | 
						||
| 
								 | 
							
								      equal('a msg', this.lastMsg)
							 | 
						||
| 
								 | 
							
								      same(this.lastObj, { from: 'child', msg: 'a msg' })
							 | 
						||
| 
								 | 
							
								      const result = JSON.parse(chunk)
							 | 
						||
| 
								 | 
							
								      ok(new Date(result.time) <= new Date(), 'time is greater than Date.now()')
							 | 
						||
| 
								 | 
							
								      delete result.time
							 | 
						||
| 
								 | 
							
								      same(result, {
							 | 
						||
| 
								 | 
							
								        pid,
							 | 
						||
| 
								 | 
							
								        hostname,
							 | 
						||
| 
								 | 
							
								        level: 30,
							 | 
						||
| 
								 | 
							
								        hello: 'world',
							 | 
						||
| 
								 | 
							
								        from: 'child',
							 | 
						||
| 
								 | 
							
								        msg: 'a msg'
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const child = instance.child({ hello: 'world' })
							 | 
						||
| 
								 | 
							
								  child.info({ from: 'child' }, 'a msg')
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('without object', async ({ ok, same, equal }) => {
							 | 
						||
| 
								 | 
							
								  const instance = pino({}, {
							 | 
						||
| 
								 | 
							
								    [Symbol.for('pino.metadata')]: true,
							 | 
						||
| 
								 | 
							
								    write (chunk) {
							 | 
						||
| 
								 | 
							
								      equal(instance, this.lastLogger)
							 | 
						||
| 
								 | 
							
								      equal(30, this.lastLevel)
							 | 
						||
| 
								 | 
							
								      equal('a msg', this.lastMsg)
							 | 
						||
| 
								 | 
							
								      same({ msg: 'a msg' }, this.lastObj)
							 | 
						||
| 
								 | 
							
								      const result = JSON.parse(chunk)
							 | 
						||
| 
								 | 
							
								      ok(new Date(result.time) <= new Date(), 'time is greater than Date.now()')
							 | 
						||
| 
								 | 
							
								      delete result.time
							 | 
						||
| 
								 | 
							
								      same(result, {
							 | 
						||
| 
								 | 
							
								        pid,
							 | 
						||
| 
								 | 
							
								        hostname,
							 | 
						||
| 
								 | 
							
								        level: 30,
							 | 
						||
| 
								 | 
							
								        msg: 'a msg'
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  instance.info('a msg')
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('without msg', async ({ ok, same, equal }) => {
							 | 
						||
| 
								 | 
							
								  const instance = pino({}, {
							 | 
						||
| 
								 | 
							
								    [Symbol.for('pino.metadata')]: true,
							 | 
						||
| 
								 | 
							
								    write (chunk) {
							 | 
						||
| 
								 | 
							
								      equal(instance, this.lastLogger)
							 | 
						||
| 
								 | 
							
								      equal(30, this.lastLevel)
							 | 
						||
| 
								 | 
							
								      equal(undefined, this.lastMsg)
							 | 
						||
| 
								 | 
							
								      same({ hello: 'world' }, this.lastObj)
							 | 
						||
| 
								 | 
							
								      const result = JSON.parse(chunk)
							 | 
						||
| 
								 | 
							
								      ok(new Date(result.time) <= new Date(), 'time is greater than Date.now()')
							 | 
						||
| 
								 | 
							
								      delete result.time
							 | 
						||
| 
								 | 
							
								      same(result, {
							 | 
						||
| 
								 | 
							
								        pid,
							 | 
						||
| 
								 | 
							
								        hostname,
							 | 
						||
| 
								 | 
							
								        level: 30,
							 | 
						||
| 
								 | 
							
								        hello: 'world'
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  instance.info({ hello: 'world' })
							 | 
						||
| 
								 | 
							
								})
							 |