Winston is one of the most widely used logging libraries in Node.js applications. It's designed to provide a highly customizable logging experience by separating concerns like log levels, formatting styles, and output destinations.

atatus-winston is a winston plugin. With atatus-winston, you can take advantage of the winston logger framework with your Node.js app.

Add the dependency to your project

copy
icon/buttons/copy
npm install atatus-winston --save

Configure atatus-winston

Use the samples in the code block below as a starting point, and replace the sample with a configuration that matches your needs.

copy
icon/buttons/copy
const winston = require('winston');
const AtatusWinstonTransport = require('atatus-winston');

let atatusWinstonTransport = new AtatusWinstonTransport({
    apiKey: '<YOUR_API_KEY>',
    name: 'atatus-winston',
    service: 'payment-service',
    source: 'payment-service'
});

const logger = winston.createLogger({
    format: winston.format.simple(),
    transports: [ atatusWinstonTransport ],
});

logger.info('Just a test message for Atatus Winston Logger setup');

Replace <YOUR_API_KEY> with your own Atatus api key.

If you do not have a Atatus account, you can sign up for a free trial here

Disable console logs

The winston logger by default sends all logs to the console. You can easily disable this by adding this line to your code :

copy
icon/buttons/copy
winston.remove(winston.transports.Console);

Running with Typescript

If you don't have a 'tsconfig.json' file start by running:

copy
icon/buttons/copy
tsc --init

On your 'tsconfig' file, under 'compilerOptions' make sure you have 'esModuleInterop' flag with the value 'true' or add it this way:

copy
icon/buttons/copy
  "compilerOptions": {
    ...
    "esModuleInterop": true
  }

Code sample:

copy
icon/buttons/copy
import winston from 'winston';
import AtatusWinstonTransport from 'atatus-winston';

let atatusWinstonTransport = new AtatusWinstonTransport({
    apiKey: '<YOUR_API_KEY>',
    name: 'atatus-winston',
    service: 'payment-service',
    source: 'payment-service'
});

const logger = winston.createLogger({
    format: winston.format.simple(),
    transports: [ atatusWinstonTransport ],
});

logger.log('warn', 'Just a test warning message');

Replace <YOUR_API_KEY> with your own Atatus api key.

Troubleshooting

To fix errors related to "esModuleInterop" flag make sure you run the relevant 'tsconfig' file. These might help:

copy
icon/buttons/copy
tsc <file-name>.ts --esModuleInterop

or

copy
icon/buttons/copy
tsc --project tsconfig.json