@@ -6,6 +6,8 @@ import { isObject } from '../utils/shared.utils';
66declare const process : any ;
77const yellow = clc . xterm ( 3 ) ;
88
9+ export type LogLevel = 'log' | 'error' | 'warn' | 'debug' | 'verbose' ;
10+
911export interface LoggerService {
1012 log ( message : any , context ?: string ) ;
1113 error ( message : any , trace ?: string , context ?: string ) ;
@@ -16,6 +18,7 @@ export interface LoggerService {
1618
1719@Injectable ( )
1820export class Logger implements LoggerService {
21+ private static logLevels : LogLevel [ ] = [ ] ;
1922 private static lastTimestamp ?: number ;
2023 private static instance ?: typeof Logger | LoggerService = Logger ;
2124
@@ -26,6 +29,9 @@ export class Logger implements LoggerService {
2629
2730 error ( message : any , trace = '' , context ?: string ) {
2831 const instance = this . getInstance ( ) ;
32+ if ( ! this . isLogLevelEnabled ( 'error' ) ) {
33+ return ;
34+ }
2935 instance &&
3036 instance . error . call ( instance , message , trace , context || this . context ) ;
3137 }
@@ -46,7 +52,11 @@ export class Logger implements LoggerService {
4652 this . callFunction ( 'verbose' , message , context ) ;
4753 }
4854
49- static overrideLogger ( logger : LoggerService | boolean ) {
55+ static overrideLogger ( logger : LoggerService | LogLevel [ ] | boolean ) {
56+ if ( Array . isArray ( logger ) ) {
57+ this . logLevels = logger ;
58+ return ;
59+ }
5060 this . instance = isObject ( logger ) ? ( logger as LoggerService ) : undefined ;
5161 }
5262
@@ -81,6 +91,9 @@ export class Logger implements LoggerService {
8191 message : any ,
8292 context ?: string ,
8393 ) {
94+ if ( ! this . isLogLevelEnabled ( name ) ) {
95+ return ;
96+ }
8497 const instance = this . getInstance ( ) ;
8598 const func = instance && ( instance as typeof Logger ) [ name ] ;
8699 func &&
@@ -97,6 +110,10 @@ export class Logger implements LoggerService {
97110 return instance === this ? Logger : instance ;
98111 }
99112
113+ private isLogLevelEnabled ( level : LogLevel ) : boolean {
114+ return Logger . logLevels . includes ( level ) ;
115+ }
116+
100117 private static printMessage (
101118 message : any ,
102119 color : ( message : string ) => string ,
0 commit comments