Giter Club home page Giter Club logo

log4js-tcp-appender's Introduction

log4js-tcp

TCP appender for log4js-node logger with layouts and errors handling

Usage

Install appender

npm i log4js-tcp-appender

Configure log4js using appender

log4js.configure({
	appenders: {
		splunk: {
			type: 'log4js-tcp-appender',
			host: 'splunk.host',
			port: 6789,
			layout: {
				type: 'custom_or_builtin_layout',
			},
		},
	},
	categories: {
		default: {
			appenders: ['splunk'],
			level: 'info',
		},
	},
}); 

Note on error handling

Occurring socket errors will be logged to STDERR. Appender tries to reconnect on 'close' socket event, same happens on 'error' event by simply handling following 'close' event. This may lead to repeating connection error. Keeping in mind this case, appender will only log distinct error messages, comparing every occurring error to the last 10. Also will write notification message on successful re-connection.

Sample STDERR output in case of temporary connection unavailability:

# Messages are being logged normally here

2018-11-19T15:37:38.500Z	log4js-tcp-appender:40348	Error: connect ECONNREFUSED 10.0.0.101:8001
	at Object.exports._errnoException (util.js:1024:11)
	...

2018-11-19T15:37:38.600Z	log4js-tcp-appender:40348	Error: connect ECONNREFUSED 10.0.0.102:8001
	at Object.exports._errnoException (util.js:1024:11)
	...

2018-11-19T15:37:38.700Z	log4js-tcp-appender:40348	Error: connect ECONNREFUSED 10.0.0.103:8001
	at Object.exports._errnoException (util.js:1024:11)
	...

# Lots of omitted by appender error messages same as the three above

2018-11-19T15:37:44.963Z	log4js-tcp-appender:40348	Connection restored

# Messages are being logged normally here

Comparing each error instance to the last ten, cures the case when receiving side being load-balanced and returns new ip for each sequential ougoing connection try.

Notes:

  • could be grepped by 'log4js-tcp-appender' substring
  • in sample output log4js-tcp-appender:40348 - PID added after the colon

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.