@zebpay/colt
Version:
LoggerSDK for Microservices with multiple adapters eg: Pino, Winston, Bunyan with support for [Mapped Diagnostics Context](http://logback.qos.ch/manual/mdc.html).
36 lines (32 loc) • 1.12 kB
JavaScript
const PinoAdapter = require('../adapters/PinoAdapter');
const BunyanAdapter = require('../adapters/BunyanAdapter');
const WinstonAdapter = require('../adapters/WinstonAdapter');
/**
* @class LoggerFactory
* @abstract
* @classdesc LoggerFactory creates the instance of the adapter based on configurations.
*/
class LoggerFactory {
/**
* Gets the instances of the adapter for defined scope
* @static
* @param {('pino'|'winston'|'bunyan')} adapterName - name of adapter to be used for logging
* @param {logOptions} logOptions - LogOptions for logging
* @return {LogAdapter} - Instance of Adapter
* @throws {Error} - LoggerError when invalid adapter is provided.
* @memberof LoggerFactory
*/
static getAdapter(adapterName, logOptions) {
switch (adapterName) {
case 'pino':
return new PinoAdapter(logOptions);
case 'bunyan':
return new BunyanAdapter(logOptions);
case 'winston':
return new WinstonAdapter(logOptions);
default:
throw new Error('LoggerError: Invalid adapter value.');
}
}
}
module.exports = LoggerFactory;