UNPKG

@opentelemetry/api

Version:
1 lines • 5.26 kB
{"version":3,"file":"diag.cjs","names":["getGlobal","createLogLevelDiagLogger","registerGlobal","DiagComponentLogger"],"sources":["../../src/api/diag.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport type {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n} from '../diag/types';\nimport { DiagLogLevel } from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n *\n * @since 1.0.0\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\n\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n"],"mappings":";;;;;AAoBA,MAAM,WAAW;;;;;;;AAQjB,IAAa,UAAb,MAAa,QAA6C;;CAIxD,OAAc,WAAoB;EAChC,IAAI,CAAC,KAAK,WACR,KAAK,YAAY,IAAI,QAAQ;EAG/B,OAAO,KAAK;CACd;;;;;CAMA,cAAsB;EACpB,SAAS,UAAU,UAA6C;GAC9D,OAAO,SAAU,GAAG,MAAM;IACxB,MAAM,SAASA,qBAAAA,UAAU,MAAM;IAE/B,IAAI,CAAC,QAAQ;IACb,OAAO,OAAO,SAAS,CAAC,GAAG,IAAI;GACjC;EACF;EAGA,MAAM,OAAO;EAIb,MAAM,aACJ,QACA,oBAAoB,EAAE,UAAA,GAA4B,MAC/C;;GACH,IAAI,WAAW,MAAM;;IAInB,MAAM,sBAAM,IAAI,MACd,oIACF;IACA,KAAK,OAAA,aAAM,IAAI,WAAA,QAAA,eAAA,KAAA,IAAA,aAAS,IAAI,OAAO;IACnC,OAAO;GACT;GAEA,IAAI,OAAO,sBAAsB,UAC/B,oBAAoB,EAClB,UAAU,kBACZ;GAGF,MAAM,YAAYA,qBAAAA,UAAU,MAAM;GAClC,MAAM,YAAYC,uBAAAA,0BAAAA,wBAChB,kBAAkB,cAAA,QAAA,0BAAA,KAAA,IAAA,wBAAA,IAClB,MACF;GAEA,IAAI,aAAa,CAAC,kBAAkB,yBAAyB;;IAC3D,MAAM,SAAA,gCAAQ,IAAI,MAAM,EAAA,CAAE,WAAA,QAAA,iBAAA,KAAA,IAAA,eAAS;IACnC,UAAU,KAAK,2CAA2C,OAAO;IACjE,UAAU,KACR,6DAA6D,OAC/D;GACF;GAEA,OAAOC,qBAAAA,eAAe,QAAQ,WAAW,MAAM,IAAI;EACrD;EAEA,KAAK,YAAY;EAEjB,KAAK,gBAAgB;GACnB,qBAAA,iBAAiB,UAAU,IAAI;EACjC;EAEA,KAAK,yBAAyB,YAAoC;GAChE,OAAO,IAAIC,wBAAAA,oBAAoB,OAAO;EACxC;EAEA,KAAK,UAAU,UAAU,SAAS;EAClC,KAAK,QAAQ,UAAU,OAAO;EAC9B,KAAK,OAAO,UAAU,MAAM;EAC5B,KAAK,OAAO,UAAU,MAAM;EAC5B,KAAK,QAAQ,UAAU,OAAO;CAChC;AAqBF"}