wclhuntwork
v0.0.2
Published
wcl
Downloads
2
Readme
winston-cloudwatch v1.3.1
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)
- see options for more
- 100% code coverage in lib layer (WIP for the rest)
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 you should click on the gear in the top right corner on 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.
Options
This is the list of options you could pass as argument to winston.add
:
- level - defaults to
info
- logGroupName
- logStreamName
- awsAccessKeyId
- awsSecretKey
- awsRegion
- jsonMessage -
boolean
, format the message as JSON - messageFormatter -
function
, format the message the way you like. This function will receive alog
object that has the following properties:level
,msg
, andmeta
, which are passed by winston to thelog
function (see CustomLogger.prototype.log as an example) - proxyServer -
String
, useproxyServer
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 toconsole.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.
Please refer to the provided examples for more hints.