@ogcio/o11y-sdk-node
Version:
Opentelemetry standard instrumentation SDK for NodeJS based project
35 lines (32 loc) • 973 B
text/typescript
import { LogRecord, LogRecordProcessor } from "@opentelemetry/sdk-logs";
import { Context } from "@opentelemetry/api";
import { SignalAttributeValue } from "../index.js";
export class EnrichLogProcessor implements LogRecordProcessor {
private _spanAttributes?:
| Record<string, SignalAttributeValue | (() => SignalAttributeValue)>
| undefined = undefined;
constructor(
spanAttributes?: Record<
string,
SignalAttributeValue | (() => SignalAttributeValue)
>,
) {
this._spanAttributes = spanAttributes;
}
forceFlush(): Promise<void> {
return Promise.resolve();
}
onEmit(logRecord: LogRecord, _context?: Context): void {
if (this._spanAttributes) {
for (const [key, value] of Object.entries(this._spanAttributes)) {
logRecord.setAttribute(
key,
typeof value === "function" ? value() : value,
);
}
}
}
shutdown(): Promise<void> {
return Promise.resolve();
}
}