add logger
This commit is contained in:
parent
f5a0e6f251
commit
060247c0db
73
frontend/src/app/services/logger/global-logger.service.ts
Normal file
73
frontend/src/app/services/logger/global-logger.service.ts
Normal file
|
@ -0,0 +1,73 @@
|
|||
export enum LoggerLevel {
|
||||
error = 'error',
|
||||
warn = 'warn',
|
||||
log = 'log',
|
||||
verbose = 'verbose',
|
||||
debug = 'debug',
|
||||
}
|
||||
export interface LoggerContext {
|
||||
source: string;
|
||||
}
|
||||
export const DEFAULT_LOGGER_LEVELS: string[] = Object.values(LoggerLevel);
|
||||
|
||||
const LoggerStyles: {
|
||||
[key in LoggerLevel]: string;
|
||||
} = {
|
||||
[LoggerLevel.error]: 'color: red; font-weight: bold',
|
||||
[LoggerLevel.warn]: 'color: orange; font-weight: bold',
|
||||
[LoggerLevel.log]: 'color: cyan; font-weight: bold',
|
||||
[LoggerLevel.verbose]: 'font-weight: bold',
|
||||
[LoggerLevel.debug]: 'color: gray; font-weight: bold',
|
||||
};
|
||||
|
||||
const LoggerFunctions: {
|
||||
[key in LoggerLevel]: 'error' | 'warn' | 'log' | 'debug';
|
||||
} = {
|
||||
[LoggerLevel.error]: 'error',
|
||||
[LoggerLevel.warn]: 'warn',
|
||||
[LoggerLevel.log]: 'log',
|
||||
[LoggerLevel.verbose]: 'log',
|
||||
[LoggerLevel.debug]: 'debug',
|
||||
};
|
||||
|
||||
export class GlobalLogger {
|
||||
private enabledLevels: string[] = [];
|
||||
|
||||
constructor() {
|
||||
this.enabledLevels = DEFAULT_LOGGER_LEVELS;
|
||||
}
|
||||
|
||||
verbose(args: any[], context: LoggerContext) {
|
||||
this.sendLog(args, LoggerLevel.verbose, context);
|
||||
}
|
||||
|
||||
debug(args: any[], context: LoggerContext) {
|
||||
this.sendLog(args, LoggerLevel.debug, context);
|
||||
}
|
||||
|
||||
log(args: any[], context: LoggerContext) {
|
||||
this.sendLog(args, LoggerLevel.log, context);
|
||||
}
|
||||
|
||||
warn(args: any[], context: LoggerContext) {
|
||||
this.sendLog(args, LoggerLevel.warn, context);
|
||||
}
|
||||
|
||||
error(args: any[], context: LoggerContext) {
|
||||
this.sendLog(args, LoggerLevel.error, context);
|
||||
}
|
||||
|
||||
setLogLevels(levels: string[]) {
|
||||
this.enabledLevels = levels;
|
||||
}
|
||||
|
||||
private sendLog(args: any[], level: LoggerLevel, context: LoggerContext) {
|
||||
if (!this.enabledLevels.includes(level)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const styles = LoggerStyles[level];
|
||||
const message = ['%c' + context.source, styles, ...args];
|
||||
console[LoggerFunctions[level]](...message);
|
||||
}
|
||||
}
|
30
frontend/src/app/services/logger/logger.service.ts
Normal file
30
frontend/src/app/services/logger/logger.service.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import { GlobalLogger, LoggerContext } from './global-logger.service';
|
||||
|
||||
export class Logger {
|
||||
private static globalLogger = new GlobalLogger();
|
||||
private context: LoggerContext;
|
||||
|
||||
constructor(source: string) {
|
||||
this.context = { source };
|
||||
}
|
||||
|
||||
verbose(...args: any[]) {
|
||||
Logger.globalLogger.verbose(args, this.context);
|
||||
}
|
||||
|
||||
debug(...args: any[]) {
|
||||
Logger.globalLogger.debug(args, this.context);
|
||||
}
|
||||
|
||||
log(...args: any[]) {
|
||||
Logger.globalLogger.log(args, this.context);
|
||||
}
|
||||
|
||||
warn(...args: any[]) {
|
||||
Logger.globalLogger.warn(args, this.context);
|
||||
}
|
||||
|
||||
error(...args: any[]) {
|
||||
Logger.globalLogger.error(args, this.context);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue