Giter Club home page Giter Club logo

winston-loggly-bulk's Introduction

winston-loggly-bulk

A Loggly transport for winston.

Version npmnpm Downloads

NPM

A client implementation for Loggly in node.js. Check out Loggly's Node logging documentation for more.

Usage

  var winston = require('winston');

  //
  // Requiring `winston-loggly-bulk` will expose
  // `winston.transports.Loggly`
  //
  require('winston-loggly-bulk');

  winston.add(winston.transports.Loggly, options);

The Loggly transport is based on Nodejitsu's node-loggly implementation of the Loggly API. If you haven't heard of Loggly before, you should probably read their value proposition. The Loggly transport takes the following options. Either 'inputToken' or 'inputName' is required:

  • level: Level of messages that this transport should log.
  • subdomain: The subdomain of your Loggly account. [required]
  • auth: The authentication information for your Loggly account. [required with inputName]
  • inputName: The name of the input this instance should log to.
  • inputToken: The input token of the input this instance should log to.
  • json: If true, messages will be sent to Loggly as JSON.
  • tags: An array of tags to send to loggly.
  • isBulk: If true, sends messages using bulk url
  • stripColors: Strip color codes from the logs before sending
  • bufferOptions: Buffer options has two configurations.
    • size: Number of logs to be buffered.
    • retriesInMilliSeconds: Time in milliseconds to retry sending buffered logs.
  • timestamp: If false, library will not include timestamp in log events.
    • Note: Library includes timestamp by default when we do not set timestamp option.

Metadata: Logged in suggested Loggly format

Buffer Support

This library has buffer support during temporary network outage. User can configure size of buffer (no. of logs to be stored during network outage).

Add these below configuration in code snippet to override the default values of buffer option size and retriesInMilliSeconds.

bufferOptions: {
    size: 1000,
    retriesInMilliSeconds: 60 * 1000
}  
  • Note: The default value of buffer size and retries in milliseconds are 500 and 30000 (30 seconds) respectively.

Flush logs and exit

Our library uses ajax requests to send logs to Loggly, and as ajax requests take time to complete, logs can be lost when process.exit() is called because it forces an immediate exit. To exit gracefully and ensure that the last logs get to Loggly, we created a function called flushLogsAndExit(). It waits for 10 seconds and then calls process.exit() itself. This allows enough time for the logs to be sent to Loggly.

Here is an example of how to use the method:

var winston = require('winston'),
winlog = require('winston-loggly-bulk');

winston.log("info", "hello World");
winlog.flushLogsAndExit();
  

Motivation

tldr;?: To break the winston codebase into small modules that work together.

The winston codebase has been growing significantly with contributions and other logging transports. This is awesome. However, taking a ton of additional dependencies just to do something simple like logging to the Console and a File is overkill.

Installation

Installing npm (node package manager)

  $ curl http://npmjs.org/install.sh | sh

Installing winston-loggly

  $ npm install winston
  $ npm install winston-loggly-bulk

Run Tests

All of the winston tests are written in vows, and cover all of the use cases described above. You will need to add valid credentials for the various transports included to test/config.json before running tests:

  {
    "transports": {
      "loggly": {
        "subdomain": "your-subdomain",
        "inputToken": "really-long-token-you-got-from-loggly",
        "auth": {
          "username": "your-username",
          "password": "your-password"
        }
      }
    }
  }

Once you have valid configuration and credentials you can run tests with npm:

  npm test

Contributors: Loggly, Shweta Jain,

winston-loggly-bulk's People

Contributors

indexzero avatar jcrugzz avatar mostlyjason avatar shwetajain148 avatar chjj avatar framerate avatar varshneyjayant avatar bradfol avatar chris-rudmin avatar adamhadani avatar bjrnt avatar ducas avatar joeybaker avatar nachoman avatar mdemri avatar zachgrayio avatar ronxjansen avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.