12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- const debug = require('debug')('log4js:tcp-server');
- const net = require('net');
- const clustering = require('../clustering');
- const LoggingEvent = require('../LoggingEvent');
- const DELIMITER = '__LOG4JS__';
- exports.configure = (config) => {
- debug('configure called with ', config);
- // dummy shutdown if we're not master
- let shutdown = (cb) => { cb(); };
- clustering.onlyOnMaster(() => {
- const server = net.createServer((socket) => {
- let dataSoFar = '';
- const send = (data) => {
- if (data) {
- dataSoFar += data;
- if (dataSoFar.indexOf(DELIMITER)) {
- const events = dataSoFar.split(DELIMITER);
- if (!dataSoFar.endsWith(DELIMITER)) {
- dataSoFar = events.pop();
- } else {
- dataSoFar = '';
- }
- events.filter(e => e.length).forEach((e) => {
- clustering.send(LoggingEvent.deserialise(e));
- });
- }
- }
- };
- socket.setEncoding('utf8');
- socket.on('data', send);
- socket.on('end', send);
- });
- server.listen(config.port || 5000, config.host || 'localhost', () => {
- debug(`listening on ${config.host || 'localhost'}:${config.port || 5000}`);
- server.unref();
- });
- shutdown = (cb) => {
- debug('shutdown called.');
- server.close(cb);
- };
- });
- return {
- shutdown
- };
- };
|