@levrbet/shared 0.2.12 → 0.2.14
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.
|
@@ -31,17 +31,7 @@ const dotenv_1 = require("./dotenv");
|
|
|
31
31
|
logger.info("Using default logger")
|
|
32
32
|
*
|
|
33
33
|
*/
|
|
34
|
-
const { combine, timestamp, errors, json,
|
|
35
|
-
// Define custom colors for Winston
|
|
36
|
-
winston_1.default.addColors({
|
|
37
|
-
error: "red",
|
|
38
|
-
warn: "yellow",
|
|
39
|
-
info: "cyan",
|
|
40
|
-
http: "magenta",
|
|
41
|
-
verbose: "gray",
|
|
42
|
-
debug: "blue",
|
|
43
|
-
silly: "gray",
|
|
44
|
-
});
|
|
34
|
+
const { combine, timestamp, errors, json, printf, splat } = winston_1.default.format;
|
|
45
35
|
// Determine log level based on environment
|
|
46
36
|
const getLogLevel = () => {
|
|
47
37
|
switch (dotenv_1.LEVR_ENV) {
|
|
@@ -57,14 +47,55 @@ const getLogLevel = () => {
|
|
|
57
47
|
return "info";
|
|
58
48
|
}
|
|
59
49
|
};
|
|
50
|
+
// Color mapping for manual colorization
|
|
51
|
+
const colors = {
|
|
52
|
+
error: "\x1b[31m", // red
|
|
53
|
+
warn: "\x1b[33m", // yellow
|
|
54
|
+
info: "\x1b[36m", // cyan
|
|
55
|
+
http: "\x1b[35m", // magenta
|
|
56
|
+
verbose: "\x1b[90m", // gray
|
|
57
|
+
debug: "\x1b[34m", // blue
|
|
58
|
+
silly: "\x1b[90m", // gray
|
|
59
|
+
};
|
|
60
|
+
const reset = "\x1b[0m";
|
|
61
|
+
// Helper to detect if object is array-like with numeric keys
|
|
62
|
+
const isArrayLikeObject = (obj) => {
|
|
63
|
+
if (typeof obj !== "object" || obj === null)
|
|
64
|
+
return false;
|
|
65
|
+
const keys = Object.keys(obj);
|
|
66
|
+
return keys.length > 0 && keys.every((key) => /^\d+$/.test(key));
|
|
67
|
+
};
|
|
68
|
+
// Safe stringify that handles array-like objects
|
|
69
|
+
const safeStringify = (value) => {
|
|
70
|
+
if (value === null || value === undefined)
|
|
71
|
+
return "";
|
|
72
|
+
if (typeof value === "string")
|
|
73
|
+
return value;
|
|
74
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
75
|
+
return String(value);
|
|
76
|
+
// Check if it's an array-like object (string that got converted to object)
|
|
77
|
+
if (isArrayLikeObject(value)) {
|
|
78
|
+
// Reconstruct the original string
|
|
79
|
+
const keys = Object.keys(value).sort((a, b) => parseInt(a) - parseInt(b));
|
|
80
|
+
return keys.map((key) => value[key]).join("");
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
return JSON.stringify(value);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return String(value);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
60
89
|
// Custom format for console output in non-production
|
|
61
90
|
const consoleFormat = printf(({ level, message, timestamp, stack, service, ...metadata }) => {
|
|
62
|
-
|
|
91
|
+
const color = colors[level] || "";
|
|
92
|
+
const coloredLevel = dotenv_1.LEVR_ENV === "prod" ? level : `${color}${level}${reset}`;
|
|
93
|
+
let msg = `${timestamp} [${coloredLevel}]`;
|
|
63
94
|
if (service) {
|
|
64
95
|
msg += ` [${service}]`;
|
|
65
96
|
}
|
|
66
|
-
// Ensure message is properly stringified
|
|
67
|
-
const formattedMessage =
|
|
97
|
+
// Ensure message is properly stringified, handling array-like objects
|
|
98
|
+
const formattedMessage = safeStringify(message);
|
|
68
99
|
msg += `: ${formattedMessage}`;
|
|
69
100
|
// Add stack trace if error
|
|
70
101
|
if (stack) {
|
|
@@ -73,7 +104,10 @@ const consoleFormat = printf(({ level, message, timestamp, stack, service, ...me
|
|
|
73
104
|
// Add metadata if present
|
|
74
105
|
const metaKeys = Object.keys(metadata).filter((key) => key !== "environment");
|
|
75
106
|
if (metaKeys.length > 0) {
|
|
76
|
-
const filteredMeta =
|
|
107
|
+
const filteredMeta = {};
|
|
108
|
+
for (const key of metaKeys) {
|
|
109
|
+
filteredMeta[key] = isArrayLikeObject(metadata[key]) ? safeStringify(metadata[key]) : metadata[key];
|
|
110
|
+
}
|
|
77
111
|
msg += `\n${JSON.stringify(filteredMeta, null, 2)}`;
|
|
78
112
|
}
|
|
79
113
|
return msg;
|
|
@@ -81,7 +115,7 @@ const consoleFormat = printf(({ level, message, timestamp, stack, service, ...me
|
|
|
81
115
|
// Production format (structured JSON for OTEL)
|
|
82
116
|
const productionFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(), json());
|
|
83
117
|
// Development format (human-readable)
|
|
84
|
-
const developmentFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(),
|
|
118
|
+
const developmentFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(), consoleFormat);
|
|
85
119
|
const createLogger = (options = {}) => {
|
|
86
120
|
const { service = "@levrbet/shared", level = getLogLevel(), additionalMeta = {} } = options;
|
|
87
121
|
const logger = winston_1.default.createLogger({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"winston.js","sourceRoot":"","sources":["../../../src/server/config/winston.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAC7B,qCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"winston.js","sourceRoot":"","sources":["../../../src/server/config/winston.ts"],"names":[],"mappings":"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"}
|