log4js-node/docs/logstashUDP.md

55 lines
2.1 KiB
Markdown

# Logstash UDP Appender
This appender sends log events to a [logstash](https://www.elastic.co/products/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. User-defined fields can be either a string or a function. Functions will be passed the log event, and should return a string.
* `layout` - (optional, defaults to dummyLayout) - used for the `message` field of the logstash data (see [layouts](layouts.md))
* `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
```javascript
log4js.configure({
appenders: {
logstash: {
type: 'logstashUDP',
host: 'log.server',
port: '12345',
logType: 'application',
fields: { biscuits: 'digestive', tea: 'tetley', user: function(logEvent) {
return AuthLibrary.currentUser();
}
}
}
},
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:
```javascript
{
'@version': '1',
'@timestamp': '2014-04-22T23:03:14.111Z',
'type': 'application',
'message': 'important log message',
'fields': {
'level': 'INFO',
'category': 'default',
'biscuits': 'hobnob',
'user': 'charlie',
'cheese': 'gouda',
'tea': 'tetley'
}
}
```