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 diff --git a/readme.md b/readme.md index 0cd13b6..d552d62 100644 --- a/readme.md +++ b/readme.md @@ -38,6 +38,18 @@ Syslogd(function(info) { }) ``` +Or using unix domain sockets: + +```js +const unix = require("unix-dgram"); +var Syslogd = require('syslogd') +Syslogd(function(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