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.
328 lines
7.6 KiB
328 lines
7.6 KiB
'use strict'
|
|
// eslint-disable-next-line
|
|
if (typeof $1 !== 'undefined') $1 = arguments.callee.caller.arguments[0]
|
|
|
|
const test = require('tape')
|
|
const fresh = require('import-fresh')
|
|
const pino = require('../browser')
|
|
|
|
const parentSerializers = {
|
|
test: () => 'parent'
|
|
}
|
|
|
|
const childSerializers = {
|
|
test: () => 'child'
|
|
}
|
|
|
|
test('serializers override values', ({ end, is }) => {
|
|
const parent = pino({
|
|
serializers: parentSerializers,
|
|
browser: {
|
|
serialize: true,
|
|
write (o) {
|
|
is(o.test, 'parent')
|
|
end()
|
|
}
|
|
}
|
|
})
|
|
|
|
parent.fatal({ test: 'test' })
|
|
})
|
|
|
|
test('without the serialize option, serializers do not override values', ({ end, is }) => {
|
|
const parent = pino({
|
|
serializers: parentSerializers,
|
|
browser: {
|
|
write (o) {
|
|
is(o.test, 'test')
|
|
end()
|
|
}
|
|
}
|
|
})
|
|
|
|
parent.fatal({ test: 'test' })
|
|
})
|
|
|
|
if (process.title !== 'browser') {
|
|
test('if serialize option is true, standard error serializer is auto enabled', ({ end, same }) => {
|
|
const err = Error('test')
|
|
err.code = 'test'
|
|
err.type = 'Error' // get that cov
|
|
const expect = pino.stdSerializers.err(err)
|
|
|
|
const consoleError = console.error
|
|
console.error = function (err) {
|
|
same(err, expect)
|
|
}
|
|
|
|
const logger = fresh('../browser')({
|
|
browser: { serialize: true }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.fatal(err)
|
|
end()
|
|
})
|
|
|
|
test('if serialize option is array, standard error serializer is auto enabled', ({ end, same }) => {
|
|
const err = Error('test')
|
|
err.code = 'test'
|
|
const expect = pino.stdSerializers.err(err)
|
|
|
|
const consoleError = console.error
|
|
console.error = function (err) {
|
|
same(err, expect)
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
browser: { serialize: [] }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.fatal(err)
|
|
end()
|
|
})
|
|
|
|
test('if serialize option is array containing !stdSerializers.err, standard error serializer is disabled', ({ end, is }) => {
|
|
const err = Error('test')
|
|
err.code = 'test'
|
|
const expect = err
|
|
|
|
const consoleError = console.error
|
|
console.error = function (err) {
|
|
is(err, expect)
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
browser: { serialize: ['!stdSerializers.err'] }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.fatal(err)
|
|
end()
|
|
})
|
|
|
|
test('in browser, serializers apply to all objects', ({ end, is }) => {
|
|
const consoleError = console.error
|
|
console.error = function (test, test2, test3, test4, test5) {
|
|
is(test.key, 'serialized')
|
|
is(test2.key2, 'serialized2')
|
|
is(test5.key3, 'serialized3')
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
serializers: {
|
|
key: () => 'serialized',
|
|
key2: () => 'serialized2',
|
|
key3: () => 'serialized3'
|
|
},
|
|
browser: { serialize: true }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('serialize can be an array of selected serializers', ({ end, is }) => {
|
|
const consoleError = console.error
|
|
console.error = function (test, test2, test3, test4, test5) {
|
|
is(test.key, 'test')
|
|
is(test2.key2, 'serialized2')
|
|
is(test5.key3, 'test')
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
serializers: {
|
|
key: () => 'serialized',
|
|
key2: () => 'serialized2',
|
|
key3: () => 'serialized3'
|
|
},
|
|
browser: { serialize: ['key2'] }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('serialize filter applies to child loggers', ({ end, is }) => {
|
|
const consoleError = console.error
|
|
console.error = function (binding, test, test2, test3, test4, test5) {
|
|
is(test.key, 'test')
|
|
is(test2.key2, 'serialized2')
|
|
is(test5.key3, 'test')
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
browser: { serialize: ['key2'] }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.child({
|
|
aBinding: 'test',
|
|
serializers: {
|
|
key: () => 'serialized',
|
|
key2: () => 'serialized2',
|
|
key3: () => 'serialized3'
|
|
}
|
|
}).fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('parent serializers apply to child bindings', ({ end, is }) => {
|
|
const consoleError = console.error
|
|
console.error = function (binding) {
|
|
is(binding.key, 'serialized')
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
serializers: {
|
|
key: () => 'serialized'
|
|
},
|
|
browser: { serialize: true }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.child({ key: 'test' }).fatal({ test: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('child serializers apply to child bindings', ({ end, is }) => {
|
|
const consoleError = console.error
|
|
console.error = function (binding) {
|
|
is(binding.key, 'serialized')
|
|
}
|
|
|
|
const logger = fresh('../browser', require)({
|
|
browser: { serialize: true }
|
|
})
|
|
|
|
console.error = consoleError
|
|
|
|
logger.child({
|
|
key: 'test',
|
|
serializers: {
|
|
key: () => 'serialized'
|
|
}
|
|
}).fatal({ test: 'test' })
|
|
end()
|
|
})
|
|
}
|
|
|
|
test('child does not overwrite parent serializers', ({ end, is }) => {
|
|
var c = 0
|
|
const parent = pino({
|
|
serializers: parentSerializers,
|
|
browser: {
|
|
serialize: true,
|
|
write (o) {
|
|
c++
|
|
if (c === 1) is(o.test, 'parent')
|
|
if (c === 2) {
|
|
is(o.test, 'child')
|
|
end()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
const child = parent.child({ serializers: childSerializers })
|
|
|
|
parent.fatal({ test: 'test' })
|
|
child.fatal({ test: 'test' })
|
|
})
|
|
|
|
test('children inherit parent serializers', ({ end, is }) => {
|
|
const parent = pino({
|
|
serializers: parentSerializers,
|
|
browser: {
|
|
serialize: true,
|
|
write (o) {
|
|
is(o.test, 'parent')
|
|
}
|
|
}
|
|
})
|
|
|
|
const child = parent.child({ a: 'property' })
|
|
child.fatal({ test: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('children serializers get called', ({ end, is }) => {
|
|
const parent = pino({
|
|
test: 'this',
|
|
browser: {
|
|
serialize: true,
|
|
write (o) {
|
|
is(o.test, 'child')
|
|
}
|
|
}
|
|
})
|
|
|
|
const child = parent.child({ a: 'property', serializers: childSerializers })
|
|
|
|
child.fatal({ test: 'test' })
|
|
end()
|
|
})
|
|
|
|
test('children serializers get called when inherited from parent', ({ end, is }) => {
|
|
const parent = pino({
|
|
test: 'this',
|
|
serializers: parentSerializers,
|
|
browser: {
|
|
serialize: true,
|
|
write: (o) => {
|
|
is(o.test, 'pass')
|
|
}
|
|
}
|
|
})
|
|
|
|
const child = parent.child({ serializers: { test: () => 'pass' } })
|
|
|
|
child.fatal({ test: 'fail' })
|
|
end()
|
|
})
|
|
|
|
test('non overriden serializers are available in the children', ({ end, is }) => {
|
|
const pSerializers = {
|
|
onlyParent: () => 'parent',
|
|
shared: () => 'parent'
|
|
}
|
|
|
|
const cSerializers = {
|
|
shared: () => 'child',
|
|
onlyChild: () => 'child'
|
|
}
|
|
|
|
var c = 0
|
|
|
|
const parent = pino({
|
|
serializers: pSerializers,
|
|
browser: {
|
|
serialize: true,
|
|
write (o) {
|
|
c++
|
|
if (c === 1) is(o.shared, 'child')
|
|
if (c === 2) is(o.onlyParent, 'parent')
|
|
if (c === 3) is(o.onlyChild, 'child')
|
|
if (c === 4) is(o.onlyChild, 'test')
|
|
}
|
|
}
|
|
})
|
|
|
|
const child = parent.child({ serializers: cSerializers })
|
|
|
|
child.fatal({ shared: 'test' })
|
|
child.fatal({ onlyParent: 'test' })
|
|
child.fatal({ onlyChild: 'test' })
|
|
parent.fatal({ onlyChild: 'test' })
|
|
end()
|
|
})
|