diff --git a/src/logger/__tests__/logger.test.ts b/src/logger/__tests__/logger.test.ts index 7405229013..af10455afb 100644 --- a/src/logger/__tests__/logger.test.ts +++ b/src/logger/__tests__/logger.test.ts @@ -29,6 +29,14 @@ describe('general functionality', () => { expect(logger.level).toEqual(LogLevel.Debug) }) + test('contextFilter overrides level', () => { + const logger = new Logger({ + level: LogLevel.Info, + contextFilter: 'test', + }) + expect(logger.level).toEqual(LogLevel.Debug) + }) + test('supports extra metadata', () => { const timestamp = Date.now() const logger = new Logger({}) diff --git a/src/logger/index.ts b/src/logger/index.ts index bbbd38cfb6..0ca1464e7b 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -37,7 +37,7 @@ export class Logger { static create(context?: LogContext) { const logger = new Logger({ - level: (process.env.EXPO_PUBLIC_LOG_LEVEL || LogLevel.Info) as LogLevel, + level: process.env.EXPO_PUBLIC_LOG_LEVEL as LogLevel, context, contextFilter: process.env.EXPO_PUBLIC_LOG_DEBUG || '', }) @@ -57,14 +57,15 @@ export class Logger { contextFilter?: string } = {}) { this.context = context - this.level = - level || (process.env.EXPO_PUBLIC_LOG_LEVEL as LogLevel) || LogLevel.Info // default to info - this.contextFilter = - contextFilter || process.env.EXPO_PUBLIC_LOG_DEBUG || '' + this.level = level || LogLevel.Info + this.contextFilter = contextFilter || '' + if (this.contextFilter) { + this.level = LogLevel.Debug + } this.debugContextRegexes = (this.contextFilter || '') .split(',') .map(filter => { - return new RegExp(filter.replace(/[^\w:*]/, '').replace(/\*/g, '.*')) + return new RegExp(filter.replace(/[^\w:*-]/, '').replace(/\*/g, '.*')) }) } @@ -105,6 +106,7 @@ export class Logger { metadata: Metadata }) { if ( + level === LogLevel.Debug && !!this.contextFilter && !!this.context && !this.debugContextRegexes.find(reg => reg.test(this.context!))