From d002418b8d375b4fe9423749680a1d03185fc4f9 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Oct 2018 19:13:58 +0200 Subject: [PATCH 1/3] added support for externally provided server sockets (such as dgram based unix domain socket) --- index.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 9ff1179..8ccdb6d 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,4 @@ // vim: set ft=javascript tabstop=4 softtabstop=4 shiftwidth=4 autoindent: -var dgram = require('dgram') var debug = require('debug')('syslogd') module.exports = exports = Syslogd @@ -13,18 +12,23 @@ function Syslogd(fn, opt) { this.opt = opt || {} this.handler = fn - this.server = dgram.createSocket('udp4') + this.server = this.opt.server || require('dgram').createSocket('udp4') } var proto = Syslogd.prototype proto.listen = function(port, cb) { - var server = this.server if (this.port) { - debug('server has binded to %s', port) + debug('server has already bound to %s', port) return } - debug('try bind to %s', port) + + if(this.opt.unlinkSocket) { + try { require('fs').unlinkSync(port); } catch(ex) {} + } + + var server = this.server + debug('try binding to %s', port) cb = cb || noop this.port = port || 514 // default is 514 var me = this From 1022d9e83e3453b755999560fa8f85184b9f291e Mon Sep 17 00:00:00 2001 From: irsl Date: Mon, 22 Oct 2018 19:15:20 +0200 Subject: [PATCH 2/3] Example for unix domain sockets --- readme.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/readme.md b/readme.md index 0cd13b6..67f7dda 100644 --- a/readme.md +++ b/readme.md @@ -38,6 +38,32 @@ Syslogd(function(info) { }) ``` +Or using unix domain sockets: + +```js +const unix = require("unix-dgram"); +var Syslogd = require('syslogd') +Syslogd(function(info) { + /* + info = { + facility: 7 + , severity: 22 + , tag: 'tag' + , time: Mon Dec 15 2014 10:58:44 GMT-0800 (PST) + , hostname: 'hostname' + , address: '127.0.0.1' + , family: 'IPv4' + , port: null + , size: 39 + , msg: 'info' + } + */ + console.log("line received", info); +}, {server: unix.createSocket('unix_dgram'), unlinkSocket: true}).listen("/var/log/nginx.sock", function(err) { + console.log('start', err) +}) +``` + Check parser performance by `npm run performance`, which will run 500000 times [npm-image]: https://img.shields.io/npm/v/syslogd.svg?style=flat-square From 575abb2654f416ce6f1418c7a4bb39a39edf166f Mon Sep 17 00:00:00 2001 From: irsl Date: Mon, 22 Oct 2018 19:16:08 +0200 Subject: [PATCH 3/3] Update readme.md --- readme.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/readme.md b/readme.md index 67f7dda..d552d62 100644 --- a/readme.md +++ b/readme.md @@ -44,20 +44,6 @@ Or using unix domain sockets: const unix = require("unix-dgram"); var Syslogd = require('syslogd') Syslogd(function(info) { - /* - info = { - facility: 7 - , severity: 22 - , tag: 'tag' - , time: Mon Dec 15 2014 10:58:44 GMT-0800 (PST) - , hostname: 'hostname' - , address: '127.0.0.1' - , family: 'IPv4' - , port: null - , size: 39 - , msg: 'info' - } - */ console.log("line received", info); }, {server: unix.createSocket('unix_dgram'), unlinkSocket: true}).listen("/var/log/nginx.sock", function(err) { console.log('start', err)