@ngx-toolkit/logger
Version:
Angular logger abstraction
178 lines (167 loc) • 6.21 kB
JavaScript
import * as i0 from '@angular/core';
import { InjectionToken, Injectable, Optional, Inject, APP_INITIALIZER, NgModule } from '@angular/core';
import { tap } from 'rxjs/operators';
/**
* Log levels
*/
var Level;
(function (Level) {
Level[Level["ERROR"] = 0] = "ERROR";
Level[Level["WARN"] = 1] = "WARN";
Level[Level["INFO"] = 2] = "INFO";
Level[Level["DEBUG"] = 3] = "DEBUG";
Level[Level["LOG"] = 4] = "LOG";
})(Level || (Level = {}));
const LOGGER_LEVEL = new InjectionToken('LOGGER_LEVEL');
class LoggerService {
/**
* Outputs an error message.
*/
error(message, ...optionalParams) {
}
/**
* Outputs a warning message.
*/
warn(message, ...optionalParams) {
}
/**
* Outputs an informational message.
*/
info(message, ...optionalParams) {
}
/**
* Outputs a debug message.
*/
debug(message, ...optionalParams) {
}
/**
* Outputs a message.
*/
log(message, ...optionalParams) {
}
/**
* Outputs a message.
*/
logLevel(level, message, ...optionalParams) {
switch (level) {
case Level.ERROR:
this.error(message, ...optionalParams);
break;
case Level.WARN:
this.warn(message, ...optionalParams);
break;
case Level.INFO:
this.info(message, ...optionalParams);
break;
case Level.DEBUG:
this.debug(message, ...optionalParams);
break;
case Level.LOG:
this.log(message, ...optionalParams);
break;
}
}
}
LoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
LoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerService, decorators: [{
type: Injectable
}] });
class ConsoleLoggerService extends LoggerService {
constructor(level) {
super();
if (level) {
Object.keys(Level)
.filter(s => isNaN(+s) && level >= Level[s])
.forEach(levelName => {
const methodName = levelName.toLowerCase();
this[methodName] = console[methodName].bind(console);
});
}
}
}
ConsoleLoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: ConsoleLoggerService, deps: [{ token: LOGGER_LEVEL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
ConsoleLoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: ConsoleLoggerService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: ConsoleLoggerService, decorators: [{
type: Injectable
}], ctorParameters: function () {
return [{ type: Level, decorators: [{
type: Optional
}, {
type: Inject,
args: [LOGGER_LEVEL]
}] }];
} });
const LOGGER_DECORATOR_DATA = {};
function Debug(message) {
return Log(message, Level.DEBUG);
}
function Log(message, level = Level.INFO) {
return (target, propertyKey, descriptor) => {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
const result = originalMethod.apply(this, args);
if (LOGGER_DECORATOR_DATA.loggerService) {
LOGGER_DECORATOR_DATA.loggerService.logLevel(level, message || `Call ${propertyKey.toString()}`, args, result);
}
return result;
};
return descriptor;
};
}
function setupLoggerDecorator(loggerService) {
LOGGER_DECORATOR_DATA.loggerService = loggerService;
return () => null;
}
class LoggerModule {
static forRoot(level = null, provider = ConsoleLoggerService) {
return {
ngModule: LoggerModule,
providers: [
{
provide: LOGGER_LEVEL,
useValue: level
},
{
provide: LoggerService,
useClass: provider
},
{
provide: APP_INITIALIZER,
useFactory: setupLoggerDecorator,
deps: [LoggerService],
multi: true
}
]
};
}
}
LoggerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
LoggerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerModule });
LoggerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerModule });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: LoggerModule, decorators: [{
type: NgModule
}] });
function logger(message, nextLevel = Level.INFO, errorLevel = Level.ERROR, completeLevel) {
return tap(x => {
if (LOGGER_DECORATOR_DATA.loggerService) {
LOGGER_DECORATOR_DATA.loggerService.logLevel(nextLevel, message, x);
}
}, e => {
if (LOGGER_DECORATOR_DATA.loggerService) {
LOGGER_DECORATOR_DATA.loggerService.logLevel(errorLevel, message, e);
}
}, () => {
if (LOGGER_DECORATOR_DATA.loggerService && completeLevel) {
LOGGER_DECORATOR_DATA.loggerService.logLevel(completeLevel, message);
}
});
}
/*
* Public API Surface of logger
*/
/**
* Generated bundle index. Do not edit.
*/
export { ConsoleLoggerService, Debug, LOGGER_LEVEL, Level, Log, LoggerModule, LoggerService, logger };
//# sourceMappingURL=ngx-toolkit-logger.mjs.map