barracuda-client-api
Version:
API Client to connect to Barracuda Enterprise Service Bus
155 lines (126 loc) • 4.17 kB
text/typescript
/* tslint:disable */
export enum loglevels {
none,
error,
warn,
info,
http,
debug,
verbose,
silly,
}
export type LogLevelStrings = keyof typeof loglevels;
let logLevelKeys: LogLevelStrings[] = [];
export function LogLevelKeys(): LogLevelStrings[] {
if (logLevelKeys.length === 0) {
logLevelKeys = Object.keys(loglevels)
.filter(v => !(parseInt(v, 10) >= 0)) as LogLevelStrings[];
}
return logLevelKeys;
}
export function GenerateLogLevelMap(): { [p: string]: loglevels } {
return (LogLevelKeys())
.reduce((previousValue, currentValue) => {
previousValue[currentValue] = loglevels[currentValue];
previousValue[currentValue.toLocaleUpperCase()] = loglevels[currentValue];
previousValue[currentValue.toLocaleLowerCase()] = loglevels[currentValue];
return previousValue;
}, {} as { [p: string]: loglevels });
}
export const logLevelByString: { [ll: string]: loglevels } = GenerateLogLevelMap();
export function loglevel(ll: string): loglevels {
return logLevelByString[ll?.toLowerCase()];
}
export function shouldLogErrors(level: loglevels): boolean {
return level >= loglevels.error;
}
export function isInfo(level: loglevels): boolean {
return level >= loglevels.info;
}
export function isDebug(level: loglevels): boolean {
return level >= loglevels.debug;
}
export function isWarn(level: loglevels): boolean {
return level >= loglevels.warn;
}
export function isVerbose(level: loglevels): boolean {
return level >= loglevels.verbose;
}
export function isSilly(level: loglevels): boolean {
return level >= loglevels.silly;
}
let pid: string | undefined;
function checkPid(): void {
if (!pid) {
if (process && process.pid) {
pid = ` [${process.pid}]`;
} else {
pid = '';
}
}
}
function TsT(): string {
return new Date().toISOString();
// 2020-08-25T18:41:37.119Z
// return new Date().toISOString()
// .substr(11);
}
function changeLoggingArgs(type: 'ERROR' | 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'SILLY', data: any[]): any[] {
checkPid();
if (typeof data[0] === 'string') {
data[0] = `[${TsT()}]${pid} [${type}] ${data[0]}`;
} else {
data = [`[${TsT()}]${pid} [${type}]`, ...data];
}
return data;
}
export let logError: any;
export let logDebug: any;
export let logInfo: any;
export let logWarn: any;
export let logVerbose: any;
export let logSilly: any;
function useConsole(args: any[] | string, output: (...data: any[]) => void): void {
if (Array.isArray(args)) {
output(...args);
} else {
output(args);
}
}
export function useConsoleLoggingWithAdvanced(): void {
logError = (...data: any[]) => useConsole(changeLoggingArgs('ERROR', data), console.error);
logDebug = (...data: any[]) => useConsole(changeLoggingArgs('DEBUG', data), console.debug);
logInfo = (...data: any[]) => useConsole(changeLoggingArgs('INFO', data), console.info);
logWarn = (...data: any[]) => useConsole(changeLoggingArgs('WARN', data), console.warn);
logVerbose = (...data: any[]) => useConsole(changeLoggingArgs('TRACE', data), console.debug);
logSilly = (...data: any[]) => useConsole(changeLoggingArgs('SILLY', data), console.trace);
}
export function useConsoleLogging(): void {
logError = (...data: any[]) => useConsole(data, console.error);
logDebug = (...data: any[]) => useConsole(data, console.debug);
logInfo = (...data: any[]) => useConsole(data, console.info);
logWarn = (...data: any[]) => useConsole(data, console.warn);
logVerbose = (...data: any[]) => useConsole(data, console.debug);
logSilly = (...data: any[]) => useConsole(data, console.trace);
}
useConsoleLoggingWithAdvanced();
export function setLoggers(infoLogger: any, debugLogger: any, warnLogger: any, errorLogger: any, verboseLogger: any, sillyLogger: any): void {
if (infoLogger) {
logInfo = infoLogger;
}
if (debugLogger) {
logDebug = debugLogger;
}
if (warnLogger) {
logWarn = warnLogger;
}
if (errorLogger) {
logError = errorLogger;
}
if (verboseLogger) {
logVerbose = verboseLogger;
}
if (sillyLogger) {
logSilly = sillyLogger;
}
}