@multiplayer-app/otlp-core
Version:
Multiplayer otlp core
49 lines (45 loc) • 1.41 kB
text/typescript
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,
),
)
}
}