49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { ILogService } from '../../models/logger.model';
|
|
|
|
import { LibraryConfigService } from '../library-config/library-config.service';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class LoggerService implements ILogService {
|
|
public log;
|
|
public LOG_FNS = [];
|
|
public MSG_PREFIXES = [
|
|
['[', ']'],
|
|
['[', '] WARN: '],
|
|
['[', '] ERROR: ']
|
|
];
|
|
|
|
constructor(private libraryConfigSrv: LibraryConfigService) {
|
|
}
|
|
|
|
private getLoggerFns(prefix: string) {
|
|
this.log = window.console;
|
|
this.LOG_FNS = [this.log.log, this.log.warn, this.log.error];
|
|
const loggerFns = this.LOG_FNS.map((logTemplFn, i) => {
|
|
return logTemplFn.bind(this.log, this.MSG_PREFIXES[i][0] + prefix + this.MSG_PREFIXES[i][1]);
|
|
});
|
|
return loggerFns;
|
|
}
|
|
|
|
public get(prefix: string) {
|
|
const prodMode = this.libraryConfigSrv.isProduction();
|
|
const loggerService = this;
|
|
return {
|
|
d: function(...args: any[]) {
|
|
if (!prodMode) {
|
|
loggerService.getLoggerFns(prefix)[0].apply(this.log, arguments);
|
|
}
|
|
},
|
|
w: function(...args: any[]) {
|
|
loggerService.getLoggerFns(prefix)[1].apply(this.log, arguments);
|
|
|
|
},
|
|
e: function(...args: any[]) {
|
|
loggerService.getLoggerFns(prefix)[2].apply(this.log, arguments);
|
|
}
|
|
};
|
|
}
|
|
}
|