node-gelf pro
node-gelf - Graylog2 client library for Node.js. Pro - because of code-quality. GELF - The Graylog Extended Log Format.
Installation
"dependencies": {
"gelf-pro": "~1.0" // see the "releases" section
}
npm install gelf-pro
Initialization
var log = require('gelf-pro');
Configuration
log.setConfig({host: 'my.glog-server.net'});
log.setConfig({
fields: {facility: "example", owner: "Tom (a cat)"},
filter: [],
transform: [],
broadcast: [],
levels: {},
adapterName: 'udp',
adapterOptions: {
protocol: 'udp4',
family: 4,
timeout: 1000,
host: '127.0.0.1',
port: 12201
}
});
Basic functionality
var extra = {tom: 'cat', jerry: 'mouse', others: {spike: 1, tyke: 1}};
log.info("Hello world", extra, function (err, bytesSent) {});
log.info("Hello world", function (err, bytesSent) {});
log.info("Hello world", extra);
log.info("Hello world");
log.error('Oooops.', new Error('An error message'));
log.error(new Error('An error message'));
log.message(new Error('An error message'), 3);
In case extra
is a plain object,
the library converts it to a readable format. Other values are converted to string.
Acceptable format of a key is: ^[\w-]$
log.info(
'a new msg goes here',
{me: {fname: 'k', lname: 'k', bdate: new Date(2000, 01, 01)}}
);
Filtering
Sometimes we have to discard a message which is not suitable for the current environment. It is NOT
possible to modify the data.
log.setConfig({
filter: [
function (message) {
return (message.level < 7);
}
]
});
Transforming
transforming
happens after filtering
. It is possible to modify the data.
log.setConfig({
transform: [
function (message) {
if (_.isError(message.error)) {
message.error = {message: message.error.message, stack: message.error.stack};
}
return message;
}
]
});
Broadcasting
broadcasting
happens after transforming
. It is NOT
possible to modify the data.
log.setConfig({
broadcast: [
function (message) {
console[message.level > 3 ? 'log' : 'error'](message.short_message, message);
}
]
});
Levels (1, 2, 3)
emergency
, alert
, critical
, error
, warning
(warn
), notice
, info
, debug
(log
)
Adapters
- UDP (with deflation and chunking)
- TCP
Tests
Cli
npm install
npm test
Docker
[sudo] docker build --no-cache -t node-gelf-pro .
[sudo] docker run -ti --rm -v "${PWD}:/opt/app" -w "/opt/app" node-gelf-pro
Contributors
License
The MIT License (MIT)
Copyright (c) 2013-2016 Kanstantsin Kamkou