log4js-node/docs/logstashUDP.md
Rami Cohen 04577a70d0 feat(logstashUDP): Added args config option
Added a config option called args, to determine how to log args:
both (default for backward compatibility): under the fields property and as direct properties of the log object.
fields: only under the fields property.
direct: only as direct propertiesd of the log object.
2017-10-23 20:30:25 -06:00

1.9 KiB

Logstash UDP Appender

This appender sends log events to a logstash server via UDP. It uses the node.js core UDP support, and so requires no extra dependencies. Remember to call log4js.shutdown in your application if you want the UDP socket closed cleanly.

Configuration

  • type - logstashUDP
  • host - string - hostname (or IP-address) of the logstash server
  • port - integer - port of the logstash server
  • logType - string (optional) - used for the type field in the logstash data
  • category - string (optional) - used for the type field of the logstash data if logType is not defined
  • fields - object (optional) - extra fields to log with each event
  • layout - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts)
  • args - (optional, defaults to both) - determines how to log arguments and configuration fields: direct logs them as direct properties of the log object, fields logs them as child properties of the fields property, and both logs both.

Example

log4js.configure({
  appenders: {
    logstash: {
      type: 'logstashUDP',
      host: 'log.server',
      port: '12345',
      logType: 'application',
      fields: { biscuits: 'digestive', tea: 'tetley' }
    }
  },
  categories: {
    default: { appenders: ['logstash'], level: 'info' }
  }
});
const logger = log4js.getLogger();
logger.info("important log message", { cheese: 'gouda', biscuits: 'hobnob' });

This will result in a JSON message being sent to log.server:12345 over UDP, with the following format:

{
  '@version': '1',
  '@timestamp': '2014-04-22T23:03:14.111Z',
  'type': 'application',
  'message': 'important log message',
  'fields': {
    'level': 'INFO',
    'category': 'default',
    'biscuits': 'hobnob',
    'cheese': 'gouda',
    'tea': 'tetley'
  }
}