@lucaapp/service-utils 5.24.1 → 5.24.2
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.
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
2
2
|
import { Logger } from 'pino';
|
|
3
3
|
import { HttpLoggerCreationOptions } from './utils';
|
|
4
|
+
export declare const serializeLoggedError: (value: unknown) => unknown;
|
|
4
5
|
export declare const ignore: (request: IncomingMessage) => boolean;
|
|
5
6
|
export declare class LoggerFactory {
|
|
6
7
|
static getLogger(logLevel: string, sentryOptions?: {
|
package/dist/lib/logger/index.js
CHANGED
|
@@ -3,11 +3,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.LoggerFactory = exports.ignore = void 0;
|
|
6
|
+
exports.LoggerFactory = exports.ignore = exports.serializeLoggedError = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
8
|
const pick_1 = __importDefault(require("lodash/pick"));
|
|
8
9
|
const pino_1 = __importDefault(require("pino"));
|
|
9
10
|
const pino_http_1 = __importDefault(require("pino-http"));
|
|
10
11
|
const requestTracer_1 = require("../requestTracer");
|
|
12
|
+
const OMITTED_ERROR_KEYS = new Set([
|
|
13
|
+
'config',
|
|
14
|
+
'message',
|
|
15
|
+
'name',
|
|
16
|
+
'request',
|
|
17
|
+
'response',
|
|
18
|
+
'stack',
|
|
19
|
+
]);
|
|
20
|
+
const MAX_ERROR_DEPTH = 10;
|
|
21
|
+
const serializeError = (value, seen, depth) => {
|
|
22
|
+
if (seen.has(value)) {
|
|
23
|
+
return { type: value.name, message: value.message, circular: true };
|
|
24
|
+
}
|
|
25
|
+
if (depth > MAX_ERROR_DEPTH) {
|
|
26
|
+
return { type: value.name, message: value.message, truncated: true };
|
|
27
|
+
}
|
|
28
|
+
seen.add(value);
|
|
29
|
+
const { cause } = value;
|
|
30
|
+
const response = axios_1.default.isAxiosError(value) ? value.response : undefined;
|
|
31
|
+
const details = {};
|
|
32
|
+
for (const [key, detail] of Object.entries(value)) {
|
|
33
|
+
if (OMITTED_ERROR_KEYS.has(key))
|
|
34
|
+
continue;
|
|
35
|
+
details[key] =
|
|
36
|
+
detail instanceof Error
|
|
37
|
+
? serializeError(detail, seen, depth + 1)
|
|
38
|
+
: detail;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...details,
|
|
42
|
+
type: value.name,
|
|
43
|
+
message: value.message,
|
|
44
|
+
stack: value.stack,
|
|
45
|
+
...(response && {
|
|
46
|
+
responseStatus: response.status,
|
|
47
|
+
responseData: response.data,
|
|
48
|
+
}),
|
|
49
|
+
...(cause !== undefined && {
|
|
50
|
+
cause: cause instanceof Error ? serializeError(cause, seen, depth + 1) : cause,
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const serializeLoggedError = (value) => value instanceof Error ? serializeError(value, new WeakSet(), 0) : value;
|
|
55
|
+
exports.serializeLoggedError = serializeLoggedError;
|
|
11
56
|
const ignore = (request) => {
|
|
12
57
|
const url = request.url || '';
|
|
13
58
|
return (!!url.match(/\/health(\/ready)?$/g) ||
|
|
@@ -47,6 +92,10 @@ class LoggerFactory {
|
|
|
47
92
|
return (0, pino_1.default)({
|
|
48
93
|
level: logLevel,
|
|
49
94
|
mixin: requestTracer_1.getRequestTracerMixin,
|
|
95
|
+
serializers: {
|
|
96
|
+
err: exports.serializeLoggedError,
|
|
97
|
+
error: exports.serializeLoggedError,
|
|
98
|
+
},
|
|
50
99
|
transport: {
|
|
51
100
|
targets: transports,
|
|
52
101
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucaapp/service-utils",
|
|
3
|
-
"version": "5.24.
|
|
3
|
+
"version": "5.24.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"fast-xml-builder": "^1.1.7",
|
|
106
106
|
"brace-expansion": "2.1.4",
|
|
107
107
|
"form-data": "4.0.6",
|
|
108
|
-
"js-yaml": "4.3.
|
|
108
|
+
"js-yaml": "4.3.1",
|
|
109
109
|
"@opentelemetry/core": "2.8.0"
|
|
110
110
|
}
|
|
111
111
|
}
|