sasai-common-utils 1.0.43 → 1.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -1
- package/src/features/logger/index.js +26 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sasai-common-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.45",
|
|
4
4
|
"description": "Reusable utility library for common logging and other shared features.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -16,9 +16,12 @@
|
|
|
16
16
|
"@opentelemetry/exporter-logs-otlp-http": "^0.211.0",
|
|
17
17
|
"@opentelemetry/resources": "^2.5.0",
|
|
18
18
|
"@opentelemetry/sdk-logs": "^0.211.0",
|
|
19
|
+
"@opentelemetry/semantic-conventions": "^1.39.0",
|
|
19
20
|
"jsonwebtoken": "^9.0.2",
|
|
21
|
+
"klona": "^2.0.6",
|
|
20
22
|
"pino": "^9.6.0",
|
|
21
23
|
"pino-pretty": "^13.0.0",
|
|
24
|
+
"traverse": "^0.6.11",
|
|
22
25
|
"winston": "^3.17.0"
|
|
23
26
|
},
|
|
24
27
|
"devDependencies": {
|
|
@@ -5,7 +5,8 @@ const pino = require("pino");
|
|
|
5
5
|
const { trace, context } = require("@opentelemetry/api");
|
|
6
6
|
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
|
|
7
7
|
const { OTLPLogExporter } = require("@opentelemetry/exporter-logs-otlp-http");
|
|
8
|
-
const {
|
|
8
|
+
const { resourceFromAttributes } = require("@opentelemetry/resources");
|
|
9
|
+
const { ATTR_SERVICE_NAME, ATTR_DEPLOYMENT_ENVIRONMENT } = require("@opentelemetry/semantic-conventions");
|
|
9
10
|
const { SeverityNumber } = require("@opentelemetry/api-logs");
|
|
10
11
|
|
|
11
12
|
let contextProvider = () => ({});
|
|
@@ -48,9 +49,10 @@ function initOTEL() {
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
try {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
// Create resource with proper attributes
|
|
53
|
+
const resource = resourceFromAttributes({
|
|
54
|
+
[ATTR_SERVICE_NAME]: globalConfig.SERVICE_NAME,
|
|
55
|
+
[ATTR_DEPLOYMENT_ENVIRONMENT]: globalConfig.NODE_ENV,
|
|
54
56
|
});
|
|
55
57
|
|
|
56
58
|
const logExporter = new OTLPLogExporter({
|
|
@@ -105,23 +107,36 @@ function sendLog(level, data) {
|
|
|
105
107
|
const activeSpan = trace.getSpan(context.active());
|
|
106
108
|
const spanContext = activeSpan?.spanContext();
|
|
107
109
|
|
|
110
|
+
// Use trace/span from data if available, otherwise try to get from active span
|
|
111
|
+
let traceId = data.trace || spanContext?.traceId || "";
|
|
112
|
+
let spanId = data.span || spanContext?.spanId || "";
|
|
113
|
+
|
|
108
114
|
const logRecord = {
|
|
109
115
|
severityNumber: getSeverityNumber(level),
|
|
110
116
|
severityText: level.toUpperCase(),
|
|
111
117
|
body: typeof data === "string" ? data : JSON.stringify(data),
|
|
112
118
|
attributes: {
|
|
113
119
|
"log.level": level,
|
|
114
|
-
|
|
115
|
-
...(
|
|
120
|
+
"service.name": globalConfig.SERVICE_NAME,
|
|
121
|
+
...(traceId && { "trace.id": traceId }),
|
|
122
|
+
...(spanId && { "span.id": spanId }),
|
|
116
123
|
...data,
|
|
117
124
|
},
|
|
118
|
-
...(spanContext?.traceId && { traceId: spanContext.traceId }),
|
|
119
|
-
...(spanContext?.spanId && { spanId: spanContext.spanId }),
|
|
120
|
-
...(spanContext?.traceFlags !== undefined && {
|
|
121
|
-
traceFlags: spanContext.traceFlags,
|
|
122
|
-
}),
|
|
123
125
|
};
|
|
124
126
|
|
|
127
|
+
// Add trace context to log record if available
|
|
128
|
+
if (traceId) {
|
|
129
|
+
logRecord.traceId = traceId;
|
|
130
|
+
}
|
|
131
|
+
if (spanId) {
|
|
132
|
+
logRecord.spanId = spanId;
|
|
133
|
+
}
|
|
134
|
+
if (spanContext?.traceFlags !== undefined) {
|
|
135
|
+
logRecord.traceFlags = spanContext.traceFlags;
|
|
136
|
+
} else if (traceId) {
|
|
137
|
+
logRecord.traceFlags = 1; // Default to SAMPLED if we have a traceId
|
|
138
|
+
}
|
|
139
|
+
|
|
125
140
|
otelLogger.emit(logRecord);
|
|
126
141
|
} catch (error) {
|
|
127
142
|
console.error("[Logger] Failed to send OTLP log:", error);
|