Skip to content

pragmaticivan/otel-pino-transport

Repository files navigation

OpenTelemetry transport for Pino

NPM Published Version Apache License

This module provides a Transport for pino module to send Pino logging to the OpenTelemetry Logging SDK.

Compatible with OpenTelemetry JS API and SDK 1.0+.

Installation

npm install --save otel-pino-transport

Usage

This package exports the Pino transport class that is used to send records to the OpenTelemetry Logs SDK. It can be used directly when configuring a Pino logger.

For example:

const logsAPI = require('@opentelemetry/api-logs');
const {
    LoggerProvider,
    SimpleLogRecordProcessor,
    ConsoleLogRecordExporter,
} = require('@opentelemetry/sdk-logs');
const { OpenTelemetryTransport } = require('otel-pino-transport');
const pino = require('pino');


// To start a logger, you first need to initialize the Logger provider.
const loggerProvider = new LoggerProvider();
// Add a processor to export log record
loggerProvider.addLogRecordProcessor(
    new SimpleLogRecordProcessor(new ConsoleLogRecordExporter())
);
logsAPI.logs.setGlobalLoggerProvider(loggerProvider);

const transport = pino.transport({
  target: 'otel-pino-transport'
})

const logger = pino(transport)

transport.on('ready', () => {
  setInterval(() => {
    logger.info('test log')
  }, 1000)
})

Supported versions

  • pino versions >=9.0.0 <4

Useful links

License

Apache 2.0 - See LICENSE for more information.

Inspirations