Transport Configuration #
The transport option says where entries are written. It takes one of:
- a preset:
{ preset: 'loki', presetOptions: { ... } }; - several targets, presets or Pino transports:
{ targets: [...] }; - a Pino transport:
{ target: '...' }, or a chain of them:{ pipeline: [...] }.
Without transport, entries are written to stdout (stdout preset). The types are in TransportConfig.
Several destinations #
targets mixes presets and Pino transports. Each target can have its own level:
const logger = new KuzzleLogger({
level: 'debug',
serviceName: 'my-service',
transport: {
targets: [
{ preset: 'stdout', level: 'debug' },
{
preset: 'loki',
level: 'info',
presetOptions: { host: 'http://localhost:3100' },
},
],
},
});The logger level is applied first: a target only receives the entries at or above both levels.
Pino transports #
Any Pino transport can be used with target and its options:
const logger = new KuzzleLogger({
transport: {
target: 'pino/file',
options: { destination: '/var/log/app.log' },
},
});pipeline chains transports, each one transforming the entries before the next. This is what the kuzzle-elasticsearch preset does:
const logger = new KuzzleLogger({
transport: {
pipeline: [
{ target: 'pino-transport-ecs', options: { serviceName: 'my-service' } },
{
target: 'pino-elasticsearch',
options: { node: 'http://localhost:9200', index: 'logs' },
},
],
},
});