@opentelemetry/instrumentation-pino

OpenTelemetry instrumentation for pino

Usage no npm install needed!

<script type="module">
  import opentelemetryInstrumentationPino from 'https://cdn.skypack.dev/@opentelemetry/instrumentation-pino';
</script>

README

OpenTelemetry instrumentation for pino

NPM Published Version dependencies devDependencies Apache License

This module provides automatic instrumentation for injection of trace context to pino.

Compatible with OpenTelemetry JS API and SDK 1.0+.

Installation

npm install --save @opentelemetry/instrumentation-pino

Usage

const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { PinoInstrumentation } = require('@opentelemetry/instrumentation-pino');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');

const provider = new NodeTracerProvider();
provider.register();

registerInstrumentations({
  instrumentations: [
    new PinoInstrumentation({
      // Optional hook to insert additional context to log object.
      logHook: (span, record) => {
        record['resource.service.name'] = provider.resource.attributes['service.name'];
      },
    }),
    // other instrumentations
  ],
});

const pino = require('pino');
const logger = pino();
logger.info('foobar');
// {"msg":"foobar","trace_id":"fc30029f30df383a4090d3189fe0ffdf","span_id":"625fa861d19d1056","trace_flags":"01", ...}

Fields added to pino log objects

For the current active span, the following fields are injected:

  • trace_id
  • span_id
  • trace_flags

When no span context is active or the span context is invalid, injection is skipped.

Supported versions

>=5.14.0 <8

Useful links

License

Apache 2.0 - See LICENSE for more information.