A transport for Winston [https://www.npmjs.com/package/winston] which sends logging events to an AMQP-capable host, such as RabbitMQ.
npm install winston
npm install amqp-winston
var winston = require('winston');
//
// Requiring `winston-amqp` will expose
// `winston.transports.AMQP`
//
require('ampq-winston');
winston.add(winston.transports.AMQP, options);
The AMQP transport takes the following options:
- name: The name of the logger. Defaults to the final path/script, e.g. "myapp/index.js". The name is included in the AMQP message
- level: The level of the logger
- host: The location of the AMQP server. See below for a description of the defaults and format of this value:
- exchange: The AMQP exchange name. This is optional is overrides the value specified by the 'host' option
- routingKey: The AMQP routingKey. This is optional is overrides the value specified by the 'host' option. A falsy value causes the routingKey to be set from the 'name' option.
- exchangeOptions: Optional. As specified by 'connection.exchange' in [https://www.npmjs.com/package/amqp]
- publishOptions: Optional. As specified by 'exchange.publish' in [https://www.npmjs.com/package/amqp]
This can be either a URL object or a String. The format of the String (and URL properties) is:
amqp://(user):(pass)@(host|ip):(port)/(exchangeName)/(routingKey)
To simplify configuration (especially in clustered environments), the transport module first checks the 'host' option passed when the logger in created, then the environment variable WINSTON_AMQP and finally defaults to 'amqp://guest:guest@rabbit-logger:5672/winston/winston'.
winston-amqp emits an 'error' event if it cannot connection to the AMQP exchange.
The messages posted to the AMQP server are in JSON format and consist of the following fields:
{
"logHostName": "app.example.com", // The 'hostname' of the app generating the logging request
"timestamp": 1421752681391, // The (local) time the log was generated
"loggerName": "winston", // The constant 'winston', to allow for filtering by whatever is using the data
"name": "winston-amqp/test.js", // The name of the logger, which defaults to the final 'path/script' of the node process generating the log
"level": "info", // The level of the log request
"msg": "Log me", // The logged message
"meta": { // Any meta-data in the log request
"now": "2015-01-20T11:18:01.388Z"
}
}