UNPKG

@multiplayer-app/otlp-core

Version:

Multiplayer otlp core

49 lines (45 loc) 1.41 kB
import type { ReadableLogRecord, LogRecordExporter, } from '@opentelemetry/sdk-logs' import type { OTLPExporterNodeConfigBase } from '@opentelemetry/otlp-exporter-base' import { OTLPExporterBase } from '@opentelemetry/otlp-exporter-base' import { convertLegacyHttpOptions, createOtlpHttpExportDelegate, } from '@opentelemetry/otlp-exporter-base/node-http' import { MultiplayerJsonLogsSerializer } from './MultiplayerJsonLogsSerializer' import { MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL } from './constants.base' interface MultiplayerLogExporterNodeConfig extends OTLPExporterNodeConfigBase { apiKey?: string } /** * Logs Exporter for Node */ export class MultiplayerHttpLogExporterNode extends OTLPExporterBase<ReadableLogRecord[]> implements LogRecordExporter { constructor(config: MultiplayerLogExporterNodeConfig = {}) { const _config = { ...config, url: config.url || MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL, headers: { ...(config.headers || {}), ...config.apiKey ? { Authorization: config.apiKey } : {}, }, } super( createOtlpHttpExportDelegate( convertLegacyHttpOptions(_config, 'LOGS', 'v1/logs', { 'User-Agent': 'Multiplayer-OTel-OTLP-Exporter-JavaScript-LOGS', 'Content-Type': 'application/json', }), MultiplayerJsonLogsSerializer, ), ) } }