Buckets:
| const { describe, test } = require('node:test') | |
| const tspl = require('@matteo.collina/tspl') | |
| const { sink, match, once } = require('./helper') | |
| const pino = require('../') | |
| describe('log method hook', () => { | |
| test('gets invoked', async t => { | |
| const plan = tspl(t, { plan: 7 }) | |
| const stream = sink() | |
| const logger = pino({ | |
| hooks: { | |
| logMethod (args, method, level) { | |
| plan.equal(Array.isArray(args), true) | |
| plan.equal(typeof level, 'number') | |
| plan.equal(args.length, 3) | |
| plan.equal(level, this.levels.values.info) | |
| plan.deepEqual(args, ['a', 'b', 'c']) | |
| plan.equal(typeof method, 'function') | |
| plan.equal(method.name, 'LOG') | |
| method.apply(this, [args.join('-')]) | |
| } | |
| } | |
| }, stream) | |
| const o = once(stream, 'data') | |
| logger.info('a', 'b', 'c') | |
| match(await o, { msg: 'a-b-c' }) | |
| }) | |
| test('fatal method invokes hook', async t => { | |
| const plan = tspl(t, { plan: 1 }) | |
| const stream = sink() | |
| const logger = pino({ | |
| hooks: { | |
| logMethod (args, method) { | |
| plan.ok(true) | |
| method.apply(this, [args.join('-')]) | |
| } | |
| } | |
| }, stream) | |
| const o = once(stream, 'data') | |
| logger.fatal('a') | |
| match(await o, { msg: 'a' }) | |
| }) | |
| test('children get the hook', async t => { | |
| const plan = tspl(t, { plan: 2 }) | |
| const stream = sink() | |
| const root = pino({ | |
| hooks: { | |
| logMethod (args, method) { | |
| plan.ok(true) | |
| method.apply(this, [args.join('-')]) | |
| } | |
| } | |
| }, stream) | |
| const child = root.child({ child: 'one' }) | |
| const grandchild = child.child({ child: 'two' }) | |
| let o = once(stream, 'data') | |
| child.info('a', 'b') | |
| match(await o, { msg: 'a-b' }) | |
| o = once(stream, 'data') | |
| grandchild.info('c', 'd') | |
| match(await o, { msg: 'c-d' }) | |
| }) | |
| test('get log level', async t => { | |
| const plan = tspl(t, { plan: 2 }) | |
| const stream = sink() | |
| const logger = pino({ | |
| hooks: { | |
| logMethod (args, method, level) { | |
| plan.equal(typeof level, 'number') | |
| plan.equal(level, this.levels.values.error) | |
| method.apply(this, [args.join('-')]) | |
| } | |
| } | |
| }, stream) | |
| const o = once(stream, 'data') | |
| logger.error('a') | |
| match(await o, { msg: 'a' }) | |
| }) | |
| }) | |
| describe('streamWrite hook', () => { | |
| test('gets invoked', async () => { | |
| const stream = sink() | |
| const logger = pino({ | |
| hooks: { | |
| streamWrite (s) { | |
| return s.replaceAll('redact-me', 'XXX') | |
| } | |
| } | |
| }, stream) | |
| const o = once(stream, 'data') | |
| logger.info('hide redact-me in this string') | |
| match(await o, { msg: 'hide XXX in this string' }) | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 2.76 kB
- Xet hash:
- ccb8dc486222e71be7cb9b4e7f39e8e804eca998393eacb4b0cefc9e34493d93
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.