# Better Stack Winston transport

## Start logging in 3 steps

### 1. Install

Install Logtail Winston and Logtail Node NPM packages:

```bash
[label Install Logtail packages]
npm install @logtail/winston @logtail/node
```

### 2. Setup

Set up Logtail Winston transport:

```javascript
[label Set up Winston logger]
const winston = require("winston");
const { Logtail } = require("@logtail/node");
const { LogtailTransport } = require("@logtail/winston");

// Create a Logtail client
const logtail = new Logtail("$SOURCE_TOKEN", {
  endpoint: 'https://$INGESTING_HOST',
});

// Create a Winston logger - passing in the Logtail transport
const logger = winston.createLogger({
  transports: [new LogtailTransport(logtail)],
});
```




### 3. Start logging 🎉

Use Winston logger as usual:

```javascript
[label Send logs to Logtail]
logger.error("Something bad happened.");
logger.info("Log message with structured logging.", {
  item: "Orange Soda",
  price: 100.00
});

// Ensure that all logs are sent to Logtail
logtail.flush()
```

You should see your logs in [Logtail → Live tail](https://logtail.com/team/0/tail ";_blank").

[warning]
**Winston version 3.2.1 or higher is required.**
[/warning]

## Need help?

Please let us know at hello@betterstack.com.  
We're happy to help! 🙏

## Additional resources

Interested in learning more about using **multiple Winston transports** and **Winston log levels**?
Check out our [Complete Guide to Winston Logging in Node.js](https://betterstack.com/community/guides/logging/how-to-install-setup-and-use-winston-and-morgan-to-log-node-js-applications/).

## Common issues

### TypeScript error during import

You may encounter TypeScript errors when including the transformer, which can be fixed by modifying the TypeScript config.

For a `'TransportStream'` error:

```
[label TypeScript error]
Argument of type 'LogtailTransport' is not assignable to parameter of type 'TransportStream'.
  Type 'LogtailTransport' is missing the following properties from type 'TransportStream': writable, writableEnded, writableFinished, writableHighWaterMark, and 29 more.
```

Modify `tsconfig.json` with:

```
[label TS config]
  "moduleResolution": "node",
  "esModuleInterop": true
```

Thanks [@Nightbr](https://github.com/Nightbr) for submitting this!
