{"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"}