diff --git a/interceptors-opentelemetry/package.json b/interceptors-opentelemetry/package.json index 393157e1..38444658 100644 --- a/interceptors-opentelemetry/package.json +++ b/interceptors-opentelemetry/package.json @@ -30,6 +30,7 @@ "@opentelemetry/exporter-prometheus": "^0.57.0", "@opentelemetry/resources": "^1.30.0", "@opentelemetry/sdk-metrics": "^1.30.0", + "@opentelemetry/api-logs": "^0.57.0", "@opentelemetry/auto-instrumentations-node": "^0.55.0", "@opentelemetry/sdk-node": "^0.57.0", "@opentelemetry/sdk-trace-node": "^1.30.0", diff --git a/interceptors-opentelemetry/src/worker.ts b/interceptors-opentelemetry/src/worker.ts index d49e3233..901bab44 100644 --- a/interceptors-opentelemetry/src/worker.ts +++ b/interceptors-opentelemetry/src/worker.ts @@ -1,3 +1,4 @@ +import { logs, SeverityNumber } from "@opentelemetry/api-logs"; import { DefaultLogger, Worker, Runtime, makeTelemetryFilterString } from '@temporalio/worker'; import { OpenTelemetryActivityInboundInterceptor, @@ -17,7 +18,26 @@ function initializeRuntime() { // IMPORTANT: Make sure to configure the `telemetryOptions.logging` property // below to also collect logs emitted by the native runtime. // - logger: new DefaultLogger('WARN'), + logger: new DefaultLogger("WARN", (entry) => { + const seconds = Number(entry.timestampNanos / BigInt(1e9)); + const nanos = Number(entry.timestampNanos % BigInt(1e9)); + const hrTime= [seconds, nanos]; + logs.getLogger("interceptors-sample").emit({ + severityNumber: { + TRACE: SeverityNumber.TRACE, + DEBUG: SeverityNumber.DEBUG, + INFO: SeverityNumber.INFO, + WARN: SeverityNumber.WARN, + ERROR: SeverityNumber.ERROR, + }[entry.level], + body: entry.message, + severityText: entry.level.toLowerCase(), + timestamp: hrTime, + observedTimestamp: hrTime, + attributes: entry.meta, + }); + }), + telemetryOptions: { // Configure the OpenTelemetry metrics exporter for the native runtime.