diff --git a/src/logger.tsx b/src/logger.tsx index a1f8e978..2f71d12b 100644 --- a/src/logger.tsx +++ b/src/logger.tsx @@ -15,23 +15,20 @@ */ import * as optimizely from '@optimizely/optimizely-sdk'; +import { sprintf } from './utils'; const logHandler = optimizely.logging.createLogger({ prefix: '[React-SDK]' }); export const logger = { warn: (msg: string, ...splat: any[]) => { - // @ts-ignore - return logHandler.log(optimizely.enums.LOG_LEVEL.WARNING, msg, ...splat); + return logHandler.log(optimizely.enums.LOG_LEVEL.WARNING, sprintf(msg, ...splat)); }, info: (msg: string, ...splat: any[]) => { - // @ts-ignore - return logHandler.log(optimizely.enums.LOG_LEVEL.INFO, msg, ...splat); + return logHandler.log(optimizely.enums.LOG_LEVEL.INFO, sprintf(msg, ...splat)); }, debug: (msg: string, ...splat: any[]) => { - // @ts-ignore - return logHandler.log(optimizely.enums.LOG_LEVEL.DEBUG, msg, ...splat); + return logHandler.log(optimizely.enums.LOG_LEVEL.DEBUG, sprintf(msg, ...splat)); }, error: (msg: string, ...splat: any[]) => { - // @ts-ignore - return logHandler.log(optimizely.enums.LOG_LEVEL.ERROR, msg, ...splat); + return logHandler.log(optimizely.enums.LOG_LEVEL.ERROR, sprintf(msg, ...splat)); }, }; diff --git a/src/utils.tsx b/src/utils.tsx index 2a32e5e0..da4b9a97 100644 --- a/src/utils.tsx +++ b/src/utils.tsx @@ -145,3 +145,17 @@ export function createFailedDecision(flagKey: string, message: string, user: Use }; } +export function sprintf(format: string, ...args: any[]): string { + let i = 0; + return format.replace(/%s/g, () => { + const arg = args[i++]; + const type = typeof arg; + if (type === 'function') { + return arg(); + } else if (type === 'string') { + return arg; + } else { + return String(arg); + } + }); +}