{"version":3,"file":"Logger.js","sources":["../../src/logger/Logger.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n logLevel: LogLevel,\n containsPii?: boolean,\n context?: string,\n correlationId?: string\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n Error,\n Warning,\n Info,\n Verbose,\n Trace\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n\n // Correlation ID for request, usually set by user.\n private correlationId: string;\n\n // Current log level, defaults to info.\n private level: LogLevel = LogLevel.Info;\n\n // Boolean describing whether PII logging is allowed.\n private piiLoggingEnabled: boolean;\n\n // Callback to send messages to.\n private localCallback: ILoggerCallback;\n\n // Package name implementing this logger\n private packageName: string;\n\n // Package version implementing this logger\n private packageVersion: string;\n\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\n const defaultLoggerCallback = () => {\n return;\n };\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\n this.level = typeof(loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\n this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\n\n this.packageName = packageName || Constants.EMPTY_STRING;\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n }\n\n /**\n * Create new Logger with existing configurations.\n */\n public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\n }\n\n /**\n * Log message with required options.\n */\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\n return;\n }\n const timestamp = new Date().toUTCString();\n\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\n let logHeader: string;\n if (!StringUtils.isEmpty(options.correlationId)) {\n logHeader = `[${timestamp}] : [${options.correlationId}]`;\n } else if (!StringUtils.isEmpty(this.correlationId)) {\n logHeader = `[${timestamp}] : [${this.correlationId}]`;\n } else {\n logHeader = `[${timestamp}]`;\n }\n\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n this.executeCallback(options.logLevel, log, options.containsPii || false);\n }\n\n /**\n * Execute callback with message.\n */\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\n if (this.localCallback) {\n this.localCallback(level, message, containsPii);\n }\n }\n\n /**\n * Logs error messages.\n */\n error(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs error messages with PII.\n */\n errorPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages.\n */\n warning(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages with PII.\n */\n warningPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages.\n */\n info(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages with PII.\n */\n infoPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages.\n */\n verbose(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages with PII.\n */\n verbosePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages.\n */\n trace(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages with PII.\n */\n tracePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Returns whether PII Logging is enabled or not.\n */\n isPiiLoggingEnabled(): boolean {\n return this.piiLoggingEnabled || false;\n }\n}\n"],"names":[],"mappings":"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"}