# @opentelemetry/winston-transport

> OpenTelemetry Transport for winston

Latest version **0.32.0** (published 2026-08-31) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @opentelemetry/winston-transport
pnpm add @opentelemetry/winston-transport
yarn add @opentelemetry/winston-transport
bun add @opentelemetry/winston-transport
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.32.0 |
| Published | 2026-08-31 |
| First published | 2024-03-14 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | ^18.19.0 \|\| >=20.6.0 |
| Dependencies | 3 |
| Unpacked size | 47.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 924 |
| Author | OpenTelemetry Authors |
| Maintainers | dyladan, pichlermarc, overbalance, npmjs-account, trentm, martinkuba |
| Keywords | transport, logging, nodejs, opentelemetry, winston |

## Links

- npm: https://www.npmjs.com/package/@opentelemetry/winston-transport
- Repository: https://github.com/open-telemetry/opentelemetry-js-contrib
- Homepage: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/winston-transport#readme
- Issues: https://github.com/open-telemetry/opentelemetry-js-contrib/issues
- npm.io page: https://npm.io/package/@opentelemetry/winston-transport

## Dependencies (3)

- [winston-transport](https://npm.io/package/winston-transport.md) 4.*
- [@opentelemetry/api-logs](https://npm.io/package/@opentelemetry/api-logs.md) ^0.222.0
- [@opentelemetry/semantic-conventions](https://npm.io/package/@opentelemetry/semantic-conventions.md) ^1.41.1

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 0.32.0 (latest) — 2026-08-31
- 0.31.0 — 2026-07-23
- 0.30.0 — 2026-07-03
- 0.29.0 — 2026-06-11
- 0.28.0 — 2026-05-13
- 0.27.0 — 2026-05-06
- 0.26.0 — 2026-04-29
- 0.25.0 — 2026-04-17
- 0.24.0 — 2026-03-26
- 0.23.0 — 2026-03-04
- 0.22.0 — 2026-02-17
- 0.21.0 — 2026-01-22
- 0.20.0 — 2026-01-15
- 0.19.0 — 2025-11-06
- 0.18.0 — 2025-10-21
- … 21 more at https://npm.io/package/@opentelemetry/winston-transport/versions

## README

# OpenTelemetry transport for winston

[![NPM Published Version][npm-img]][npm-url]
[![Apache License][license-image]][license-image]

This module provides a Transport for [`winston`](https://www.npmjs.com/package/winston) module to send Winston logging to the OpenTelemetry Logging SDK.

Compatible with OpenTelemetry JS API and SDK `1.0+`.

## Installation

```bash
npm install --save @opentelemetry/winston-transport
```

## Usage

This package exports the Winston transport class that is used to send records to the
OpenTelemetry Logs SDK. It can be used directly when configuring a Winston logger. If using
[`@opentelemetry/instrumenation-winston`](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-winston)
package there is no need to instantiate the transport as the instrumentation will take care of that.
For example:

```js
const logsAPI = require('@opentelemetry/api-logs');
const {
    LoggerProvider,
    SimpleLogRecordProcessor,
    ConsoleLogRecordExporter,
} = require('@opentelemetry/sdk-logs');
const { OpenTelemetryTransportV3 } = require('@opentelemetry/winston-transport');
const winston = require('winston');


// To start a logger, you first need to initialize the Logger provider.
// And add a processor to export log record.
const loggerProvider = new LoggerProvider({
  processors: [
    new SimpleLogRecordProcessor({ exporter: new ConsoleLogRecordExporter() })
  ],
});
logsAPI.logs.setGlobalLoggerProvider(loggerProvider);

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.Console(),
    new OpenTelemetryTransportV3()
  ]
});
```

> [!IMPORTANT]
> Logs will be duplicated if `@opentelemetry/winston-transport` is added as a transport in `winston` and `@opentelemetry/instrumentation-winston` is configured with `disableLogSending: false`.

### Error handling

`Error` instances assigned to the conventional `error` or `err` fields are
emitted through the OpenTelemetry Logs API exception field. Instances assigned
to other metadata fields, including errors nested in arrays or objects, are
converted to structured attributes containing their `name`, `message`, `stack`,
and other own properties. Circular references in serialized error metadata are
represented as `[Circular]`.

### Supported versions

- [`winston`](https://www.npmjs.com/package/winston) versions `>=3.0.0 <4`

## Useful links

- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more about OpenTelemetry JavaScript: <https://github.com/open-telemetry/opentelemetry-js>
- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]

## License

Apache 2.0 - See [LICENSE][license-url] for more information.

[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions
[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE
[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
[npm-url]: https://www.npmjs.com/package/@opentelemetry/winston-transport
[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fwinston-transport.svg

---
_Source: https://npm.io/package/@opentelemetry/winston-transport · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
