lhisp-logger 3.1.10 → 3.2.0
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 +1 -1
- package/src/axiosErrorSerializer.js +2 -0
- package/src/lhisp-logger.js +25 -15
package/package.json
CHANGED
|
@@ -9,6 +9,7 @@ const axiosErrorSerializer = (err) => {
|
|
|
9
9
|
err.config.headers.Authorization = err.config.headers.Authorization ? "[REDACTED]" : undefined;
|
|
10
10
|
err.config.headers.authorization = err.config.headers.authorization ? "[REDACTED]" : undefined;
|
|
11
11
|
err.config.pfx = err.config.pfx ? "[REDACTED]" : undefined;
|
|
12
|
+
err.config.passphrase = err.config.passphrase ? "[REDACTED]" : undefined;
|
|
12
13
|
}
|
|
13
14
|
if (err.response) {
|
|
14
15
|
if ((_c = err.response.config) === null || _c === void 0 ? void 0 : _c.httpsAgent)
|
|
@@ -17,6 +18,7 @@ const axiosErrorSerializer = (err) => {
|
|
|
17
18
|
err.response.config.headers.Authorization = err.response.config.headers.Authorization ? "[REDACTED]" : undefined;
|
|
18
19
|
err.response.config.headers.authorization = err.response.config.headers.authorization ? "[REDACTED]" : undefined;
|
|
19
20
|
err.response.config.pfx = err.response.config.pfx ? "[REDACTED]" : undefined;
|
|
21
|
+
err.response.config.passphrase = err.response.config.passphrase ? "[REDACTED]" : undefined;
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
return {
|
package/src/lhisp-logger.js
CHANGED
|
@@ -35,20 +35,27 @@ function getEtcHostname() {
|
|
|
35
35
|
}
|
|
36
36
|
const level = process.env.LOG_LEVEL || "info";
|
|
37
37
|
const targets = [];
|
|
38
|
-
targets.push({
|
|
39
|
-
level,
|
|
40
|
-
target: "pino-pretty",
|
|
41
|
-
options: {
|
|
42
|
-
colorize: true,
|
|
43
|
-
ignore: "pid,hostname",
|
|
44
|
-
translateTime: "yyyy-mm-dd HH:MM:ss",
|
|
45
|
-
singleLine: true,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
38
|
const appName = (0, getHostPackageName_1.getHostPackageName)() || "lhisp-app";
|
|
49
39
|
const isCI = process.env.CI === "true" || process.env.CI === "1";
|
|
50
40
|
const isJest = !!process.env.JEST_WORKER_ID;
|
|
51
|
-
const
|
|
41
|
+
const isProduction = process.env.NODE_ENV === "production";
|
|
42
|
+
// Cada target do pino.transport() sobe uma worker thread com isolate V8 proprio.
|
|
43
|
+
// Em producao nao queremos nenhuma: o stdout ja e capturado pelo driver de log do
|
|
44
|
+
// Docker, que tem rotacao configurada. Ambos os targets sao opt-in via env.
|
|
45
|
+
const prettyEnabled = (process.env.LOG_PRETTY || (isProduction ? "false" : "true")).toLowerCase() === "true";
|
|
46
|
+
const lokiEnabled = (process.env.LOG_LOKI_ENABLED || "false").toLowerCase() === "true" && !isCI && !isJest;
|
|
47
|
+
if (prettyEnabled) {
|
|
48
|
+
targets.push({
|
|
49
|
+
level,
|
|
50
|
+
target: "pino-pretty",
|
|
51
|
+
options: {
|
|
52
|
+
colorize: true,
|
|
53
|
+
ignore: "pid,hostname",
|
|
54
|
+
translateTime: "yyyy-mm-dd HH:MM:ss",
|
|
55
|
+
singleLine: true,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
52
59
|
const lokiSilenceErrors = (process.env.LOG_LOKI_SILENCE_ERRORS || "true").toLowerCase() === "true";
|
|
53
60
|
if (lokiEnabled) {
|
|
54
61
|
const lokiUrl = process.env.LOG_LOKI_URL ||
|
|
@@ -71,13 +78,15 @@ if (lokiEnabled) {
|
|
|
71
78
|
},
|
|
72
79
|
});
|
|
73
80
|
}
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
// Sem nenhum target nao chamamos pino.transport(): uma lista vazia ainda sobe a
|
|
82
|
+
// worker thread do thread-stream. Sem transport o pino escreve NDJSON direto no
|
|
83
|
+
// stdout, no proprio processo.
|
|
84
|
+
const transport = targets.length ? pino_1.default.transport({ targets }) : undefined;
|
|
76
85
|
const serializeError = (error) => {
|
|
77
86
|
const base = (0, isAxiosError_1.isAxiosError)(error) ? (0, axiosErrorSerializer_1.axiosErrorSerializer)(error) : pino_1.default.stdSerializers.err(error);
|
|
78
87
|
return (0, deepSerializeAxiosErrors_1.deepSerializeAxiosErrors)(base);
|
|
79
88
|
};
|
|
80
|
-
const
|
|
89
|
+
const pinoOptions = {
|
|
81
90
|
name: appName,
|
|
82
91
|
level,
|
|
83
92
|
hooks: {
|
|
@@ -97,7 +106,8 @@ const logger = (0, pino_1.default)({
|
|
|
97
106
|
return (0, deepSerializeAxiosErrors_1.deepSerializeAxiosErrors)(obj);
|
|
98
107
|
},
|
|
99
108
|
},
|
|
100
|
-
}
|
|
109
|
+
};
|
|
110
|
+
const logger = transport ? (0, pino_1.default)(pinoOptions, transport) : (0, pino_1.default)(pinoOptions);
|
|
101
111
|
exports.default = logger;
|
|
102
112
|
__exportStar(require("./axiosErrorSerializer"), exports);
|
|
103
113
|
__exportStar(require("./deepSerializeAxiosErrors"), exports);
|