nope/lib/logger/getLogger.ts

70 lines
1.9 KiB
TypeScript
Raw Permalink Normal View History

2020-11-06 08:10:30 +00:00
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-11-06 08:54:35
2022-01-03 18:13:51 +00:00
* @modify date 2022-01-03 18:02:49
2020-11-06 08:10:30 +00:00
* @desc [description]
*/
2021-10-18 06:02:46 +00:00
import { ILogger } from "js-logger";
2020-11-23 06:09:31 +00:00
import { getSingleton } from "../helpers/singletonMethod";
import { LoggerLevel, NopeLogger } from "./nopeLogger";
2020-11-06 08:10:30 +00:00
/**
2022-01-18 07:01:50 +00:00
* Return the central loger. This logger is a singleton (see {@link getSingleton})
*
* @author M.Karkowski
* @export
* @return {NopeLogger} A Returns the Logger {@link NopeLogger}
2020-11-06 08:10:30 +00:00
*/
2021-10-18 06:02:46 +00:00
export function getCentralNopeLogger(): NopeLogger {
2020-11-23 06:09:31 +00:00
const container = getSingleton("nopeBackendLogger.instance", () => {
2020-11-06 13:17:47 +00:00
return new NopeLogger();
});
2020-08-25 22:11:26 +00:00
2020-11-23 06:09:31 +00:00
return container.instance;
2020-08-25 22:11:26 +00:00
}
2020-11-06 08:10:30 +00:00
/**
2022-01-18 07:01:50 +00:00
* Helper Function, to create a Logger. Therefore it uses a specific Level and a Lable of the
2022-01-18 20:51:19 +00:00
* Logger. The Logger-Level can be overwritten by the central-logger see {@link getCentralNopeLogger}
*
2020-11-06 08:10:30 +00:00
*
* @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.
*/
2021-10-18 06:02:46 +00:00
export function getNopeLogger(name: string, level?: LoggerLevel): ILogger {
2020-11-06 13:17:47 +00:00
return getCentralNopeLogger().getLogger(name, level);
2021-05-21 17:21:53 +00:00
}
2022-01-03 18:13:51 +00:00
2022-01-18 07:01:50 +00:00
/**
* The valid defintion types for the logger.
*/
2022-01-03 18:13:51 +00:00
export type ValidLoggerDefinition = ILogger | LoggerLevel | false;
/**
2022-01-18 07:01:50 +00:00
* 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.
2022-01-03 18:13:51 +00:00
*
* @author M.Karkowski
* @export
* @param {ValidLoggerDefinition} param
* @param {string} defaultName
* @return {*}
*/
export function defineNopeLogger(
param: ValidLoggerDefinition,
defaultName: string
) {
if (param == false) {
2022-01-18 07:01:50 +00:00
return undefined;
2022-01-03 18:13:51 +00:00
}
if (typeof param === "string") {
return getNopeLogger(defaultName, param);
}
return param as ILogger;
}