Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/log4js-node/logstashudp
LogstashUDP Appender for log4js
https://github.com/log4js-node/logstashudp
Last synced: 2 months ago
JSON representation
LogstashUDP Appender for log4js
- Host: GitHub
- URL: https://github.com/log4js-node/logstashudp
- Owner: log4js-node
- License: apache-2.0
- Created: 2018-03-05T03:12:17.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-10-19T16:24:07.000Z (about 1 year ago)
- Last Synced: 2024-09-19T12:21:54.083Z (4 months ago)
- Language: JavaScript
- Size: 987 KB
- Stars: 20
- Watchers: 4
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Log4JS - Logstash UDP appender
This is an optional appender for [log4js-node](https://log4js-node.github.io/log4js-node/).
```bash
npm install @log4js-node/logstashudp
```The logstashUDP appender supports sending log events to a [Logstash](https://www.elastic.co/products/logstash) server. 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` - `@log4js-node/logstashudp`
* `host` - `string` - hostname (or IP-address) of the logstash server
* `port` - `integer` - port of the logstash server
* `layout` - (optional, defaults to dummyLayout) - used for the message field of the logstash data (see layouts)
* `extraDataProvider` - function (optional, defaults to put the second param of log to fields) - used to enhance the object sent to Logstash via UDP. this will be passed the log event and should return a object.## Example
### default config
```javascript
log4js.configure({
appenders: {
logstash: {
type: '@log4js-node/logstashudp',
host: 'log.server',
port: 12345
}
},
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',
'host': 'yourHostname',
'level': 'INFO',
'category': 'default',
'message': 'important log message',
'fields': {
'biscuits': 'hobnob',
'cheese': 'gouda'
}
}
```
### use estraDataProvider
```javascript
log4js.configure({
appenders: {
logstash: {
type: '@log4js-node/logstashudp',
host: 'log.server',
port: 12345,
extraDataProvider: loggingEvent => ({
host: 'anotherHostname', // this will replace the default real host
clientIp: '1.2.3.4', // this will be added
fields: {
tag: 'myTag', // this will be added to the fields
pid: loggingEvent.pid, // this will be added to the fields
cheese: 'defaultCheese' // this will be added to the fields but will not be replaced in this example
}
})
}
},
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',
'host': 'anotherHostname',
'level': 'INFO',
'category': 'default',
'message': 'important log message',
'clientIp': '1.2.3.4',
'fields': {
'cheese': 'defaultCheese',
'tag': 'myTag',
'pid': 123
}
}
```
So, if not using the default `extraDataProvider`, you have to put the second param of the log to the fields yourself if you want.