@opentelemetry/instrumentation-pino
TypeScript icon, indicating that this package has built-in type declarations

0.40.0 • Public • Published

OpenTelemetry instrumentation for pino

NPM Published Version Apache License

This module provides automatic instrumentation for injection of trace context for the pino module, which may be loaded using the @opentelemetry/sdk-trace-node package and is included in the @opentelemetry/auto-instrumentations-node bundle.

If total installation size is not constrained, it is recommended to use the @opentelemetry/auto-instrumentations-node bundle with @opentelemetry/sdk-node for the most seamless instrumentation experience.

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, level) => {
        record['resource.service.name'] =
          provider.resource.attributes['service.name'];
      },
      // Log span context under custom keys
      // This is optional, and will default to "trace_id", "span_id" and "trace_flags" as the keys
      logKeys: {
        traceId: 'traceId',
        spanId: 'spanId',
        traceFlags: 'traceFlags',
      },
    }),
    // 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. These field names can be optionally configured via logKeys in the PinoInstrumentation config:

  • 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 <10

Semantic Conventions

This package does not currently generate any attributes from semantic conventions.

Useful links

License

Apache 2.0 - See LICENSE for more information.

Package Sidebar

Install

npm i @opentelemetry/instrumentation-pino

Weekly Downloads

653,458

Version

0.40.0

License

Apache-2.0

Unpacked Size

38.6 kB

Total Files

15

Last publish

Collaborators

  • pichlermarc
  • bogdandrutu
  • dyladan