{"version":3,"file":"LoggerProvider.js","sourceRoot":"","sources":["../../src/LoggerProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag } from '@opentelemetry/api';\nimport type * as logsAPI from '@opentelemetry/api-logs';\nimport { NOOP_LOGGER } from '@opentelemetry/api-logs';\nimport { defaultResource } from '@opentelemetry/resources';\nimport { BindOnceFuture } from '@opentelemetry/core';\n\nimport type { LoggerProviderConfig } from './types';\nimport { Logger } from './Logger';\nimport {\n  DEFAULT_LOGGER_CONFIGURATOR,\n  LoggerProviderSharedState,\n} from './internal/LoggerProviderSharedState';\n\nexport const DEFAULT_LOGGER_NAME = 'unknown';\n\nexport class LoggerProvider implements logsAPI.LoggerProvider {\n  private _shutdownOnce: BindOnceFuture<void>;\n  private readonly _sharedState: LoggerProviderSharedState;\n\n  constructor(config: LoggerProviderConfig = {}) {\n    const mergedConfig = {\n      resource: config.resource ?? defaultResource(),\n      forceFlushTimeoutMillis: config.forceFlushTimeoutMillis ?? 30000,\n      logRecordLimits: {\n        attributeCountLimit: config.logRecordLimits?.attributeCountLimit ?? 128,\n        attributeValueLengthLimit:\n          config.logRecordLimits?.attributeValueLengthLimit ?? Infinity,\n      },\n      loggerConfigurator:\n        config.loggerConfigurator ?? DEFAULT_LOGGER_CONFIGURATOR,\n      processors: config.processors ?? [],\n      meterProvider: config.meterProvider,\n    };\n    this._sharedState = new LoggerProviderSharedState(\n      mergedConfig.resource,\n      mergedConfig.forceFlushTimeoutMillis,\n      mergedConfig.logRecordLimits,\n      mergedConfig.processors,\n      mergedConfig.loggerConfigurator,\n      mergedConfig.meterProvider\n    );\n    this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n  }\n\n  /**\n   * Get a logger with the configuration of the LoggerProvider.\n   */\n  public getLogger(\n    name: string,\n    version?: string,\n    options?: logsAPI.LoggerOptions\n  ): logsAPI.Logger {\n    if (this._shutdownOnce.isCalled) {\n      diag.warn('A shutdown LoggerProvider cannot provide a Logger');\n      return NOOP_LOGGER;\n    }\n\n    if (!name) {\n      diag.warn('Logger requested without instrumentation scope name.');\n    }\n    const loggerName = name || DEFAULT_LOGGER_NAME;\n    const key = `${loggerName}@${version || ''}:${options?.schemaUrl || ''}`;\n    if (!this._sharedState.loggers.has(key)) {\n      this._sharedState.loggers.set(\n        key,\n        new Logger(\n          { name: loggerName, version, schemaUrl: options?.schemaUrl },\n          this._sharedState\n        )\n      );\n    }\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    return this._sharedState.loggers.get(key)!;\n  }\n\n  /**\n   * Notifies all registered LogRecordProcessor to flush any buffered data.\n   *\n   * Returns a promise which is resolved when all flushes are complete.\n   */\n  public forceFlush(): Promise<void> {\n    // do not flush after shutdown\n    if (this._shutdownOnce.isCalled) {\n      diag.warn('invalid attempt to force flush after LoggerProvider shutdown');\n      return this._shutdownOnce.promise;\n    }\n    return this._sharedState.activeProcessor.forceFlush();\n  }\n\n  /**\n   * Flush all buffered data and shut down the LoggerProvider and all registered\n   * LogRecordProcessor.\n   *\n   * Returns a promise which is resolved when all flushes are complete.\n   */\n  public shutdown(): Promise<void> {\n    if (this._shutdownOnce.isCalled) {\n      diag.warn('shutdown may only be called once per LoggerProvider');\n      return this._shutdownOnce.promise;\n    }\n    return this._shutdownOnce.call();\n  }\n\n  private _shutdown(): Promise<void> {\n    return this._sharedState.activeProcessor.shutdown();\n  }\n}\n"]}