nope/lib/logger/getLogger.ts
2022-01-18 21:51:19 +01:00

70 lines
1.9 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-11-06 08:54:35
* @modify date 2022-01-03 18:02:49
* @desc [description]
*/
import { ILogger } from "js-logger";
import { getSingleton } from "../helpers/singletonMethod";
import { LoggerLevel, NopeLogger } from "./nopeLogger";
/**
* Return the central loger. This logger is a singleton (see {@link getSingleton})
*
* @author M.Karkowski
* @export
* @return {NopeLogger} A Returns the Logger {@link NopeLogger}
*/
export function getCentralNopeLogger(): NopeLogger {
const container = getSingleton("nopeBackendLogger.instance", () => {
return new NopeLogger();
});
return container.instance;
}
/**
* Helper Function, to create a Logger. Therefore it uses a specific Level and a Lable of the
* Logger. The Logger-Level can be overwritten by the central-logger see {@link getCentralNopeLogger}
*
*
* @export
* @param {LoggerLevel} level The Level, which should be rendered
* @param {string} [label=''] An Lable for the Logger. Every Message beginns with that lable.
* @return {*} Returns a Logger.
*/
export function getNopeLogger(name: string, level?: LoggerLevel): ILogger {
return getCentralNopeLogger().getLogger(name, level);
}
/**
* The valid defintion types for the logger.
*/
export type ValidLoggerDefinition = ILogger | LoggerLevel | false;
/**
* Helper to define a Logger based on the given Logger-Definition.
* Based on the type, a new logger is created ("LoggerLevel"), the
* provided Logger is used or if "false" no logger is returned.
*
* @author M.Karkowski
* @export
* @param {ValidLoggerDefinition} param
* @param {string} defaultName
* @return {*}
*/
export function defineNopeLogger(
param: ValidLoggerDefinition,
defaultName: string
) {
if (param == false) {
return undefined;
}
if (typeof param === "string") {
return getNopeLogger(defaultName, param);
}
return param as ILogger;
}