@opentelemetry/api
Version:
Public API for OpenTelemetry
1 lines • 3.16 kB
Source Map (JSON)
{"version":3,"file":"logs.mjs","names":[],"sources":["../../src/api/logs.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport type { LoggerProvider } from '../logs/LoggerProvider';\nimport type { Logger } from '../logs/Logger';\nimport type { LoggerOptions } from '../logs/LoggerOptions';\nimport { ProxyLoggerProvider } from '../logs/ProxyLoggerProvider';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'logs';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Logs API\n *\n * @since 1.10.0\n */\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Logs API */\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): boolean {\n const success = registerGlobal(API_NAME, provider, DiagAPI.instance());\n if (success) {\n this._proxyLoggerProvider._setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return getGlobal(API_NAME) || this._proxyLoggerProvider;\n }\n\n /**\n * Returns a Logger, creating one if one with the given name, version,\n * schemaUrl, and attributes is not already created.\n *\n * Getting a Logger may be expensive, especially when `attributes` are\n * provided. Reuse Logger instances where possible instead of calling\n * `getLogger()` on hot paths.\n *\n * @param name The name of the logger or instrumentation library.\n * @param version The version of the logger or instrumentation library.\n * @param options The options of the logger or instrumentation library.\n * @returns {@link Logger}\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n"],"mappings":";;;;AAgBA,MAAM,WAAW;;;;;;AAOjB,IAAa,UAAb,MAAa,QAAQ;;CAMnB,cAAsB;EAHtB,KAAQ,uBAAuB,IAAI,oBAAoB;CAGhC;;CAGvB,OAAc,cAAuB;EACnC,IAAI,CAAC,KAAK,WACR,KAAK,YAAY,IAAI,QAAQ;EAG/B,OAAO,KAAK;CACd;CAEA,wBAA+B,UAAmC;EAChE,MAAM,UAAU,eAAe,UAAU,UAAU,QAAQ,SAAS,CAAC;EACrE,IAAI,SACF,KAAK,qBAAqB,aAAa,QAAQ;EAEjD,OAAO;CACT;;;;;;CAOA,oBAA2C;EACzC,OAAO,UAAU,QAAQ,KAAK,KAAK;CACrC;;;;;;;;;;;;;;CAeA,UACE,MACA,SACA,SACQ;EACR,OAAO,KAAK,kBAAkB,CAAC,CAAC,UAAU,MAAM,SAAS,OAAO;CAClE;;CAGA,UAAuB;EACrB,iBAAiB,UAAU,QAAQ,SAAS,CAAC;EAC7C,KAAK,uBAAuB,IAAI,oBAAoB;CACtD;AACF"}