Open TreeOfLearning opened 2 months ago
Hello @TreeOfLearning, sorry for the wait.
I was able to reproduce your issue in plain JS, so ts-node is not the issue here. The problem is visible only if both pino-pretty and pino-opentelemetry-transport are set as transports. If only one of those is set, all log levels are visible in the logs as expected.
You will have to explicitly set the log level for each transform for this to work the way you expect it to:
const logger = pino({
transport: {
targets: [
{
target: 'pino-pretty',
options: { colorize: true },
level: 'trace'
},
{
target: 'pino-opentelemetry-transport',
level: 'trace',
options: {
resourceAttributes: {
'service.name': 'whatever'
}
}
}
]
}
})
logger.level = 'trace'
logger.trace('trace')
logger.debug('debug')
logger.info('info')
Or like this:
const logger = pino({
transport: {
targets: [
{
target: 'pino-pretty',
options: { colorize: true },
level: 'trace'
},
{
target: 'pino-opentelemetry-transport',
level: 'trace',
options: {
resourceAttributes: {
'service.name': 'whatever'
}
}
}
]
},
level: 'trace'
})
// logger.level = 'trace'
logger.trace('trace')
logger.debug('debug')
logger.info('info')
This is not specific to pino-opentelemetry-transport though,
You will see the same behaviour in similar combinations of different transports ... for example:
run
const pino = require('pino')
const logger = pino({
transport: {
targets: [
{
target: 'pino-pretty',
options: { colorize: true },
},
{
target: 'pino/file',
options: { destination: 1 }, // this writes to STDOUT,
}
]
}
})
logger.level = 'trace'
logger.trace('trace')
logger.debug('debug')
logger.info('info')
compare it to:
const pino = require('pino')
const logger = pino({
transport: {
targets: [
{
target: 'pino-pretty',
options: { colorize: true },
level: 'trace'
},
{
target: 'pino/file',
options: { destination: 1 }, // this writes to STDOUT,
level: 'trace'
}
]
}
})
logger.level = 'trace'
logger.trace('trace')
logger.debug('debug')
logger.info('info')
It seems that using this transport prevents me from changing the pino default log level.
For example:
Gives the output:
[20:51:12.705] INFO (2543437): info
Whereas this:
Gives the output:
And my otel collector only ever receives the info log when the transport enabled.
Am I missing something obvious?
Perhaps worth mentioning I am writing this in typescript and running via ts-node. Perhaps that's an issue?