Skip to content

Commit

Permalink
adding deflating
Browse files Browse the repository at this point in the history
  • Loading branch information
robertkowalski committed Jul 18, 2012
1 parent a25feea commit 381d765
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 8 deletions.
38 changes: 32 additions & 6 deletions gelf.js
@@ -1,26 +1,52 @@
var dgram = require('dgram'),
var deflate = require('zlib').deflate,
dgram = require('dgram'),
EventEmitter = require('events').EventEmitter;

var Gelf = function(config) {
var self = this;

if (!config) {
this.config = {
self.config = {
graylogStdPort: 12201,
graylogStdHost: '127.0.0.1',
connection: 'wan'

};
} else {
this.config = config;
self.config = config;
}

self.on('gelf.message', function(json) {
var message = JSON.stringify(json);
self.compress(message, function(buffer) {
self.sendMessage(buffer);
});
});

self.on('gelf.log', function() {

});
};

Gelf.prototype.__proto__ = EventEmitter.prototype;

Gelf.prototype.compress = function(message, callback) {
deflate(message, function(err, buf) {
if (err) {
throw err;
}
callback && callback(buf);
});
};

Gelf.prototype.sendMessage = function(message) {
var client = dgram.createSocket('udp4'),
message = new Buffer(message);
var self = this,
client = dgram.createSocket('udp4');

client.send(message, 0, message.length, this.config.graylogStdPort, this.config.graylogStdHost, function(err, bytes) {
client.send(message, 0, message.length, self.config.graylogStdPort, self.config.graylogStdHost, function(err, bytes) {
if (err) {
throw err;
}
client.close();
});
};
Expand Down
19 changes: 19 additions & 0 deletions test.js
@@ -0,0 +1,19 @@
Gelf = require('./gelf');

var gelf = new Gelf(null);

var message = {
"version": "1.0",
"host": "www1",
"short_message": "Short message",
"full_message": "Backtrace here\n\nmore stuff",
"timestamp": 1291899928.412,
"level": 1,
"facility": "payment-backend",
"file": "/var/www/somefile.rb",
"line": 356,
"_user_id": 42,
"_something_else": "foo"
};

gelf.emit('gelf.message', message);
31 changes: 29 additions & 2 deletions test/test.gelf.js
@@ -1,5 +1,7 @@
var expect = require('chai').expect,
Gelf = require('../Gelf');
sinon = require('sinon'),
Gelf = require('../Gelf'),
inflate = require('zlib').inflate;

describe('Gelf', function(done) {

Expand All @@ -25,8 +27,33 @@ describe('Gelf', function(done) {
server.bind(graylogStdPort);

var gelf = new Gelf(null);
gelf.sendMessage('bar');
gelf.sendMessage(new Buffer('bar'));
});

it('should emit and receive events with attached event listeners', function(done) {
var gelf = new Gelf(null);

gelf.on('graylogmessage', function(message) {
expect(message).to.equal('meh');
done();
});

gelf.emit('graylogmessage', 'meh');
});

it('should deflate strings and call the callback afterwards', function(done) {
var gelf = new Gelf(null);

var callback = function(buffer) {
inflate(buffer, function(err, buf) {
expect(buf.toString()).to.equal('bla');
done();
});
};

gelf.compress('bla', callback);
});



});

0 comments on commit 381d765

Please sign in to comment.