Git Product home page Git Product logo

winston-cloudwatch's Introduction

winston-cloudwatch v1.9.0

Build Status Coverage Status Dependency Status dev dependencies peer dependencies

Send logs to Amazon Cloudwatch using Winston.

Features

  • logging to AWS CloudWatchLogs
  • logging to multiple streams
  • logging with multiple levels
  • creates group / stream if they don't exist
  • doesn't try to buffer your unsent logs (you should use more streams)
  • waits for an upload to suceed before trying the next
  • truncates messages that are too big
  • batches messages taking care of the AWS limit
  • support for Winston's uncaught exception handler
  • see options for more

Installing

$ npm install --save winston winston-cloudwatch

Configuring

AWS configuration works using ~/.aws/credentials as written in AWS JavaScript SDK guide.

As specified in the docs:

The AWS SDK for Node.js doesn't select the region by default.

so you should take care of that. See the examples below.

If either the group or the stream do not exist they will be created for you.

For displaying time in AWS CloudWatch UI you should click on the gear in the top right corner in the page with your logs and enable checkbox "Creation Time".

Usage

Please refer to AWS CloudWatch Logs documentation for possible contraints that might affect you. Also have a look at AWS CloudWatch Logs limits.

var winston = require('winston'),
    WinstonCloudWatch = require('../index');

winston.add(WinstonCloudWatch, {
  logGroupName: 'testing',
  logStreamName: 'first'
});

winston.error('1');

You could also log to multiple streams with / without different log levels, have a look at this example.

You can also specify a function for the logGroupName and logStreamName options. This is handy if you are using this module in a server, say with express, as it enables you to easily split streams across dates, for example. There is an example of this here.

You could also have winston-cloudwatch to flush and stop the setInterval loop (thus exiting), have a look at this example.

Options

This is the list of options you could pass as argument to winston.add:

  • level - defaults to info
  • logGroupName - string or function
  • logStreamName - string or function
  • awsAccessKeyId
  • awsSecretKey
  • awsRegion
  • awsOptions - object, params as per docs, values in awsOptions are overridden by any other if specified, run this example to have a look
  • jsonMessage - boolean, format the message as JSON
  • messageFormatter - function, format the message the way you like. This function will receive a log object that has the following properties: level, msg, and meta, which are passed by winston to the log function (see CustomLogger.prototype.log as an example)
  • proxyServer - String, use proxyServer as proxy in httpOptions
  • uploadRate - Number, how often logs have to be sent to AWS. Be careful of not hitting AWS CloudWatch Logs limits, the default is 2000ms.
  • errorHandler - function, invoked with an error object, if not provided the error is sent to console.error

AWS keys are usually picked by aws-sdk so you don't have to specify them, I provided the option just in case. Remember that awsRegion should still be set if you're using IAM roles.

Examples

Please refer to the provided examples for more hints.

Note that when running the examples the process will not exit because of the setInterval

winston-cloudwatch's People

Contributors

lazywithclass avatar timjohns avatar goliatone avatar kmcgrath avatar timdp avatar yoiang avatar rebolyte avatar moshest avatar npahucki avatar nelio avatar nodkz avatar ashuntwo avatar

Watchers

James Cloos 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.