2.0.0 • Published 7 years ago

log4js-node-amqp v2.0.0

Weekly downloads
9
License
ISC
Repository
github
Last release
7 years ago

log4js-node-amqp

An AMQP appender for log4js-node

travis npm standard

Installation:

npm install log4js-node-amqp

Usage:

Configure in code:

var log4js = require('log4js');
var amqpAppender = require('log4js-node-amqp');

log4js.addAppender(
  amqpAppender.appender({
    // more config options available
    connection: {
      url: "amqp://guest:guest@localhost:5672"
    },
    // this is a space for you to add custom bits to every log message
    additionalInfo: {
      machine: require("os").hostname(),
      applicationName: 'example application'
    }
  }),
  'amqp-example'
);

or configure via configure() You could also require() a config .json or .js file here, any Javascript object will work with log4js.

log4js.configure({
  appenders: [
    {
      type: 'console'
    },
    {
      type: 'log4js-node-amqp',
      connection: {
        url: "amqp://guest:guest@localhost:5672"
      },
      // this is a space for you to add custom bits to every log message
      additionalInfo: {
        machine: require("os").hostname(),
        applicationName: 'example application'
      }
      category: 'amqp-example'
    }
  ]
});

Log things:

var logger = log4js.getLogger('amqp-example');
// strings work
logger.info('a string of log data.');
// so do objects
logger.info({name: 'a string', type: 'a silly example'});

You can also have a look at the example.

Configuration

This is a log4js appender which uses the awesome node-amqp package and shares a good bit of config with it.

 {
   // see https://github.com/postwait/node-amqp#connection
  connection: {
    url: "amqp://guest:guest@localhost:5672",
    clientProperties: {
      product: 'log4js'
    }
  },
  // see https://github.com/postwait/node-amqp#connectionexchange
  exchange: {
    name: 'logExchange',
    type: 'fanout',
    durable: true,
    autoDelete: false
  },
  // see https://github.com/postwait/node-amqp#queue - specifying a queue is optional, if you don't
  // specify one, logs will be published to the exchange. If you do specify a queue, it will be 
  // automatically created and bound to the exchange.
  queue: {
    name: 'logQ',
    durable: true,
    autoDelete: false
  },
  // see https://github.com/postwait/node-amqp#exchangepublishroutingkey-message-options-callback
  publish: {
    mandatory: true,
    deliveryMode: 2, // persistent
    routingKey: 'msg'
  },
  // interval at which to flush messages to the queue, 0 means "immediate"
  sendInterval: 0,
  // a log4js layout, this is ignored if the logged item is an object
  layout: log4js.layouts.messagePassThroughLayout,
  // this is a space for you to add custom bits to every log message
  additionalInfo: {
    //
  },
  // if you'd like to alter the logEvent before it's sent to the exchange
  logEventInterceptor: function(logEvent, additionalInfo) {
    //
  }
}

What's sent to the exchange?

// Everything log4js provides, + whatever you added to additionalInfo 
// (keys in additionalInfo are added as keys to the log message).
{
  timestamp: Fri Dec 20 2013 20:54:22 GMT-0800 (PST),
  data: 'test-message',
  level: { level: 20000, levelStr: 'INFO' },
  category: 'test'
}

// if you specified a logEventInterceptor in options,
// then whatever logEventInterceptor returns will be sent, e.g.:
log4js.configure({
  appenders: [
    {
      type: 'log4js-node-amqp',
      // more config here
      logEventInterceptor: function(logEvent, additionalInfo) {
        return (logEvent.data || {}).message; // send a simple string to the exchange
      }
    }
  ]
});

Reading things from the log-queue

If you want some ideas on how to read things from the log queue, have a look at this simple log reader example.

License

The MIT License

Copyright (c) 2015 Max Nachlinger

2.0.0

7 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.0.8

9 years ago

0.0.71

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago