@multiplayer-app/otlp-core
Version:
Multiplayer otlp core
29 lines (26 loc) • 929 B
text/typescript
import { ReadableLogRecord } from '@opentelemetry/sdk-logs'
import {
createExportLogsServiceRequest,
ISerializer,
IExportLogsServiceResponse,
} from '@opentelemetry/otlp-transformer'
import { MULTIPLAYER_TRACE_DEBUG_PREFIX } from './constants.base'
export const MultiplayerJsonLogsSerializer: ISerializer<
ReadableLogRecord[],
IExportLogsServiceResponse
> = {
serializeRequest: (arg: ReadableLogRecord[]) => {
const filteredArg = arg.filter(logRecord => logRecord?.spanContext?.traceId
?.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX))
const request = createExportLogsServiceRequest(filteredArg, {
useHex: true,
useLongBits: false,
})
const encoder = new TextEncoder()
return encoder.encode(JSON.stringify(request))
},
deserializeResponse: (arg: Uint8Array) => {
const decoder = new TextDecoder()
return JSON.parse(decoder.decode(arg)) as IExportLogsServiceResponse
},
}