@loglayer/plugin-opentelemetry
Version:
OpenTelemetry plugin for LogLayer that adds trace context to logs.
120 lines (93 loc) • 2.83 kB
Markdown
//img.shields.io/npm/v/%40loglayer%2Fplugin-opentelemetry)](https://www.npmjs.com/package/@loglayer/plugin-opentelemetry)
[](https://www.npmjs.com/package/@loglayer/plugin-opentelemetry)
[](http://www.typescriptlang.org/)
The OpenTelemetry plugin for [LogLayer](https://loglayer.dev) uses the [`@opentelemetry/api`](https://www.npmjs.com/package/@opentelemetry/api)
to store the following in the log context:
- `trace_id`
- `span_id`
- `trace_flags`
This allows you to cross-reference your logs with generated traces.
If you are using OpenTelemetry with log processors, use the [OpenTelemetry Transport](https://loglayer.dev/transports/opentelemetry).
If you don't know what that is, then you'll want to use this plugin instead of the transport.
```bash
npm install @loglayer/plugin-opentelemetry loglayer
```
```typescript
import { LogLayer, ConsoleTransport } from 'loglayer'
import { openTelemetryPlugin } from '@loglayer/plugin-opentelemetry'
const log = new LogLayer({
transport: new ConsoleTransport({
logger: console
}),
plugins: [
openTelemetryPlugin()
]
})
// Example usage
log.info("Hello world")
// Output: Hello world!
```
The plugin accepts the following configuration options:
```typescript
interface OpenTelemetryPluginParams {
/**
* If specified, all trace fields will be nested under this key
*/
traceFieldName?: string;
/**
* Field name for the trace ID. Defaults to 'trace_id'
*/
traceIdFieldName?: string;
/**
* Field name for the span ID. Defaults to 'span_id'
*/
spanIdFieldName?: string;
/**
* Field name for the trace flags. Defaults to 'trace_flags'
*/
traceFlagsFieldName?: string;
/**
* Unique identifier for the plugin
*/
id?: string;
/**
* Whether the plugin is disabled
*/
disabled?: boolean;
}
```
```typescript
const log = new LogLayer({
transport: new ConsoleTransport({
logger: console
}),
plugins: [
openTelemetryPlugin({
// Nest all trace fields under 'trace'
traceFieldName: 'trace',
// Custom field names
traceIdFieldName: 'traceId',
spanIdFieldName: 'spanId',
traceFlagsFieldName: 'flags'
})
]
})
```
This would output logs with the following structure:
```json
{
"trace": {
"traceId": "8de71fcab951aad172f1148c74d0877e",
"spanId": "349623465c6dfc1b",
"flags": "01"
}
}
```
For more details, visit [https://loglayer.dev/plugins/opentelemetry](https://loglayer.dev/plugins/opentelemetry)
[![NPM Version](https: