pino
Version:
super fast, all natural json logger
172 lines (156 loc) • 3.11 kB
text/typescript
import { expect } from 'tstyche'
import pino from '../../pino.js'
// Single
const transport = pino.transport({
target: '#pino/pretty',
options: { some: 'options for', the: 'transport' }
})
pino(transport)
expect(
pino({
transport: { target: 'pino-pretty' }
})
).type.toBe<pino.Logger>()
// Multiple
const transports = pino.transport({
targets: [
{
level: 'info',
target: '#pino/pretty',
options: { some: 'options for', the: 'transport' }
},
{
level: 'trace',
target: '#pino/file',
options: { destination: './test.log' }
}
]
})
pino(transports)
expect(
pino({
transport: {
targets: [
{
level: 'info',
target: '#pino/pretty',
options: { some: 'options for', the: 'transport' }
},
{
level: 'trace',
target: '#pino/file',
options: { destination: './test.log' }
}
]
}
})
).type.toBe<pino.Logger>()
const transportsWithCustomLevels = pino.transport({
targets: [
{
level: 'info',
target: '#pino/pretty',
options: { some: 'options for', the: 'transport' }
},
{
level: 'foo',
target: '#pino/file',
options: { destination: './test.log' }
}
],
levels: { foo: 35 }
})
pino(transportsWithCustomLevels)
expect(
pino({
transport: {
targets: [
{
level: 'info',
target: '#pino/pretty',
options: { some: 'options for', the: 'transport' }
},
{
level: 'trace',
target: '#pino/file',
options: { destination: './test.log' }
}
],
levels: { foo: 35 }
}
})
).type.toBe<pino.Logger>()
const transportsWithoutOptions = pino.transport({
targets: [
{ target: '#pino/pretty' },
{ target: '#pino/file' }
],
levels: { foo: 35 }
})
pino(transportsWithoutOptions)
expect(
pino({
transport: {
targets: [
{ target: '#pino/pretty' },
{ target: '#pino/file' }
],
levels: { foo: 35 }
}
})
).type.toBe<pino.Logger>()
const pipelineTransport = pino.transport({
pipeline: [
{
target: './my-transform.js'
},
{
// Use target: 'pino/file' to write to stdout
// without any change.
target: 'pino-pretty'
}
]
})
pino(pipelineTransport)
expect(
pino({
transport: {
pipeline: [
{
target: './my-transform.js'
},
{
// Use target: 'pino/file' to write to stdout
// without any change.
target: 'pino-pretty'
}
]
}
})
).type.toBe<pino.Logger>()
type TransportConfig = {
id: string
}
// Custom transport params
const customTransport = pino.transport<TransportConfig>({
target: 'custom',
options: { id: 'abc' }
})
pino(customTransport)
// Worker
pino.transport({
target: 'custom',
worker: {
argv: ['a', 'b'],
stdin: false,
stderr: true,
stdout: false,
autoEnd: true
},
options: { id: 'abc' }
})
// Dedupe
pino.transport({
targets: [],
dedupe: true
})