nope-js-node
Version:
NoPE Runtime for Nodejs. For Browser-Support please use nope-browser
123 lines (122 loc) • 3.81 kB
JavaScript
;
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2021-05-21 16:44:59
* @modify date 2021-10-19 17:47:39
* @desc [description]
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.useEventLogger = exports.getLogerAsEventEmitter = exports.LoggerAsEventEmitter = void 0;
const events_1 = require("events");
const singletonMethod_1 = require("../helpers/singletonMethod");
const getLogger_1 = require("./getLogger");
class LoggerAsEventEmitter {
constructor(_emitter = new events_1.EventEmitter()) {
this._emitter = _emitter;
this._emitter = new events_1.EventEmitter();
}
/**
* Register a Callback for All Log Messages
*
* @author M.Karkowski
* @param {TCallbackWithLevel} callback The callback to use.
* @memberof LoggerAsEventEmitter
*/
onLog(callback) {
this._emitter.on("log", callback);
}
/**
* Register a Callback for debug messages
*
* @author M.Karkowski
* @param {TCallback} callback The callback to use
* @memberof LoggerAsEventEmitter
*/
onDebug(callback) {
this._emitter.on("log.debug", callback);
}
/**
* Register a Callback for info messages
*
* @author M.Karkowski
* @param {TCallback} callback The callback to use
* @memberof LoggerAsEventEmitter
*/
onInfo(callback) {
this._emitter.on("log.info", callback);
}
/**
* Register a Callback for warn messages
*
* @author M.Karkowski
* @param {TCallback} callback The callback to use
* @memberof LoggerAsEventEmitter
*/
onWarn(callback) {
this._emitter.on("log.warn", callback);
}
/**
* Register a Callback for error messages
*
* @author M.Karkowski
* @param {TCallback} callback The callback to use
* @memberof LoggerAsEventEmitter
*/
onError(callback) {
this._emitter.on("log.error", callback);
}
/**
* Emits a logging message.
*
* @author M.Karkowski
* @param {LoggerLevel} level The logging level
* @param {string} name Name of the Logger.
* @param {string} msg Message
* @memberof LoggerAsEventEmitter
*/
emit(level, name, msg) {
switch (level) {
case "debug":
this._emitter.emit("log.debug", name, msg);
break;
case "info":
this._emitter.emit("log.info", name, msg);
break;
case "warn":
this._emitter.emit("log.warn", name, msg);
break;
case "error":
this._emitter.emit("log.error", name, msg);
break;
}
this._emitter.emit("log", level, name, msg);
}
}
exports.LoggerAsEventEmitter = LoggerAsEventEmitter;
function getLogerAsEventEmitter() {
const res = (0, singletonMethod_1.getSingleton)("nope.logger.event", () => {
return new LoggerAsEventEmitter();
});
return res.instance;
}
exports.getLogerAsEventEmitter = getLogerAsEventEmitter;
/**
* Function to use a log file instead of the console log.
*
* @export
*/
function useEventLogger() {
const logger = (0, getLogger_1.getCentralNopeLogger)();
const emitter = getLogerAsEventEmitter();
logger.setHandler((msg, context) => {
const msgs = [];
// Change the msg to an string based Object.
for (const key in msg) {
msgs.push(msg[key].toString());
}
emitter.emit(context.level.name.toLowerCase(), context.name, msgs.join(" "));
});
return emitter;
}
exports.useEventLogger = useEventLogger;