npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

winston-logzio

v5.2.0

Published

A winston transport wrapper for logzio

Downloads

132,547

Readme

Build Status

winston-logzio

winston-logzio is a winston plugin and wrapper for the logzio-nodejs appender. With winston-logzio, you can take advantage of the winston logger framework with your Node.js app.

Versions

Supports Winston 3, If you want to use Winston 2 - Checkout v1.0.8

Add the dependency to your project

npm install winston-logzio --save

Configure winston-logzio

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

const winston = require('winston');
const LogzioWinstonTransport = require('winston-logzio');

const logzioWinstonTransport = new LogzioWinstonTransport({
    level: 'info',
    name: 'winston_logzio',
    token: '<<SHIPPING-TOKEN>>',
    host: '<<LISTENER-HOST>>',
});

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

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

Replace <<SHIPPING-TOKEN>> with your own logz.io logs shipping token. Replace <<LISTENER-HOST>> with your region’s listener host (for example, listener.logz.io).
For more parameters for LogzioWinstonTransport and configuration options see our docs. If you do not have a Logz.io account, you can sign up for a free trial here

Options

  • token Mandatory. Your account token. Look it up in the Device Config tab in Logz.io
  • type - Log type. Help classify logs into different classifications
  • protocol - http, https or udp. Default: http
  • host - Destination host name. Default: listener.logz.io
  • port - Destination port. Default port depends on protocol. For udp default port is 5050, for http is 8070 and 8071 is for https
  • sendIntervalMs - Time in milliseconds to wait between retry attempts. Default: 2000 (2 sec)
  • bufferSize - The maximum number of messages the logger will accumulate before sending them all as a bulk. Default: 100.
  • numberOfRetries - The maximum number of retry attempts. Default: 3
  • debug - Should the logger print debug messages to the console? Default: false
  • callback - A callback function called when an unrecoverable error has occured in the logger. The function API is: function(err) - err being the Error object.
  • timeout - The read/write/connection timeout in milliseconds.
  • addTimestampWithNanoSecs - Add a timestamp with nano seconds granularity. This is needed when many logs are sent in the same millisecond, so you can properly order the logs in kibana. The added timestamp field will be @timestamp_nano Default: false
  • addOtelContext - Add trace_id, span_id, service_name fields to logs when opentelemetry context is available. Default: true
  • compress - If true the the logs are compressed in gzip format. Default: false
  • internalLogger - set internal logger that supports the function log. Default: console.
  • setUserAgent - Set to false to send logs without the user-agent field in the request header. Default:true. If you want to send data from Firefox browser, set that option to false.
  • extraFields - Adds your own custom fields to each log. Add in JSON Format, for example: extraFields : { field_1: "val_1", field_2: "val_2" , ... }.

Details

This winston plugin, basically just wraps our nodejs logzio shipper. If you want to configure the nodejs logger, any parameters sent to winston when initializing the transport (what is held in the variable LogzioWinstonTransport in the sample above) will be passed to the logzio nodejs logger itself.

Logs in my console

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

winston.remove(winston.transports.Console);

Running with Typescript

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

tsc --init

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

  "compilerOptions": {
    ...
    "esModuleInterop": true
  }

Code sample:

import winston from 'winston';
import LogzioWinstonTransport from 'winston-logzio';

const logzioWinstonTransport = new LogzioWinstonTransport({
  level: 'info',
  name: 'winston_logzio',
   token: '<<SHIPPING-TOKEN>>',
  host: '<<LISTENER-HOST>>',
});


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

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

Replace <<SHIPPING-TOKEN>> with your own logz.io logs shipping token. Replace <<LISTENER-HOST>> with your region’s listener host (for example, listener.logz.io).

For more parameters for LogzioWinstonTransport and configuration options see our docs. For trouble shooting press here. If you do not have a Logz.io account, you can sign up for a free trial here.

Note: If winston-logzio is used as part of a serverless service (AWS Lambda, Azure Functions, Google Cloud Functions, etc.), add logger.close() at the end of the run.

Details

This winston plugin, basically just wraps our nodejs logzio shipper. If you want to configure the nodejs logger, any parameters sent to winston when initializing the transport (what is held in the variable LogzioWinstonTransport in the sample above) will be passed to the logzio nodejs logger itself.

Logs in my console

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

winston.remove(winston.transports.Console);

Troubleshooting

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

tsc <file-name>.ts --esModuleInterop

or

tsc --project tsconfig.json

Add opentelemetry context

If you're sending traces with OpenTelemetry instrumentation (auto or manual), you can correlate your logs with the trace context. That way, your logs will have traces data in it, such as service name, span id and trace id (version >= 5.2.0).

This feature is enabled by default, To disable it, set the AddOtelContext param in your handler configuration to false, like in this example:

const winston = require('winston');
const LogzioWinstonTransport = require('winston-logzio');

const logzioWinstonTransport = new LogzioWinstonTransport({
    level: 'info',
    name: 'winston_logzio',
    token: '<<SHIPPING-TOKEN>>',
    host: '<<LISTENER-HOST>>',
    addOtelCotext: false,
});

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

Build and test locally

  1. Clone the repository:
git clone https://github.com/logzio/winston-logzio.git
cd winston-logzio
  1. Build and run tests:
npm install
npm test