hb-smart-logger 1.0.3 → 1.0.4
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/index.js +50 -8
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -3,10 +3,15 @@ const path = require("path");
|
|
|
3
3
|
const winston = require("winston");
|
|
4
4
|
const DailyRotateFile = require("winston-daily-rotate-file");
|
|
5
5
|
|
|
6
|
+
// Debug flag (explicit opt-in)
|
|
7
|
+
const DEBUG_ENABLED = String(process.env.DEBUG).toLowerCase() === "true";
|
|
8
|
+
|
|
6
9
|
// Ensure logs directory exists
|
|
7
10
|
const logDir = path.resolve("logs");
|
|
8
11
|
|
|
9
|
-
const subDirs = ["combined", "error", "warn", "info"
|
|
12
|
+
const subDirs = ["combined", "error", "warn", "info"];
|
|
13
|
+
if (DEBUG_ENABLED) subDirs.push("debug");
|
|
14
|
+
|
|
10
15
|
subDirs.forEach((dir) => {
|
|
11
16
|
const fullPath = path.join(logDir, dir);
|
|
12
17
|
if (!fs.existsSync(fullPath)) {
|
|
@@ -53,10 +58,10 @@ const logFormat = winston.format.printf(
|
|
|
53
58
|
);
|
|
54
59
|
|
|
55
60
|
/* ---------------------------------------------------
|
|
56
|
-
BASE LOGGER
|
|
61
|
+
BASE LOGGER (INFO ALWAYS ENABLED)
|
|
57
62
|
--------------------------------------------------- */
|
|
58
63
|
const baseLogger = winston.createLogger({
|
|
59
|
-
level: "info",
|
|
64
|
+
level: "info", // 🔒 never suppress info
|
|
60
65
|
format: winston.format.combine(
|
|
61
66
|
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
|
|
62
67
|
winston.format.errors({ stack: true }),
|
|
@@ -69,11 +74,12 @@ const baseLogger = winston.createLogger({
|
|
|
69
74
|
ROTATING FILES
|
|
70
75
|
--------------------------------------------------- */
|
|
71
76
|
|
|
72
|
-
// Combined logs
|
|
77
|
+
// Combined logs → info, warn, error ALWAYS
|
|
73
78
|
baseLogger.add(
|
|
74
79
|
new DailyRotateFile({
|
|
75
80
|
dirname: path.join(logDir, "combined"),
|
|
76
81
|
filename: "combined-%DATE%.log",
|
|
82
|
+
level: "info",
|
|
77
83
|
datePattern: "YYYY-MM-DD",
|
|
78
84
|
zippedArchive: true,
|
|
79
85
|
maxSize: "10m",
|
|
@@ -81,8 +87,8 @@ baseLogger.add(
|
|
|
81
87
|
})
|
|
82
88
|
);
|
|
83
89
|
|
|
84
|
-
// Per-level logs
|
|
85
|
-
["error", "warn", "info"
|
|
90
|
+
// Per-level logs (always enabled)
|
|
91
|
+
["error", "warn", "info"].forEach((level) => {
|
|
86
92
|
baseLogger.add(
|
|
87
93
|
new DailyRotateFile({
|
|
88
94
|
dirname: path.join(logDir, level),
|
|
@@ -96,9 +102,29 @@ baseLogger.add(
|
|
|
96
102
|
);
|
|
97
103
|
});
|
|
98
104
|
|
|
99
|
-
//
|
|
105
|
+
// Debug logs ONLY if enabled
|
|
106
|
+
if (DEBUG_ENABLED) {
|
|
107
|
+
baseLogger.add(
|
|
108
|
+
new DailyRotateFile({
|
|
109
|
+
dirname: path.join(logDir, "debug"),
|
|
110
|
+
filename: "debug-%DATE%.log",
|
|
111
|
+
level: "debug",
|
|
112
|
+
datePattern: "YYYY-MM-DD",
|
|
113
|
+
zippedArchive: true,
|
|
114
|
+
maxSize: "10m",
|
|
115
|
+
maxFiles: "30d",
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ---------------------------------------------------
|
|
121
|
+
CONSOLE OUTPUT
|
|
122
|
+
--------------------------------------------------- */
|
|
123
|
+
|
|
124
|
+
// Info+ always to console
|
|
100
125
|
baseLogger.add(
|
|
101
126
|
new winston.transports.Console({
|
|
127
|
+
level: "info",
|
|
102
128
|
format: winston.format.combine(
|
|
103
129
|
winston.format.colorize(),
|
|
104
130
|
winston.format.simple()
|
|
@@ -106,6 +132,19 @@ baseLogger.add(
|
|
|
106
132
|
})
|
|
107
133
|
);
|
|
108
134
|
|
|
135
|
+
// Debug to console ONLY if enabled
|
|
136
|
+
if (DEBUG_ENABLED) {
|
|
137
|
+
baseLogger.add(
|
|
138
|
+
new winston.transports.Console({
|
|
139
|
+
level: "debug",
|
|
140
|
+
format: winston.format.combine(
|
|
141
|
+
winston.format.colorize(),
|
|
142
|
+
winston.format.simple()
|
|
143
|
+
),
|
|
144
|
+
})
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
109
148
|
/* ---------------------------------------------------
|
|
110
149
|
WRAPPER (MULTI-ARGS + logger.log)
|
|
111
150
|
--------------------------------------------------- */
|
|
@@ -113,9 +152,12 @@ const wrapLogger = (logger) => {
|
|
|
113
152
|
const levels = ["info", "warn", "error", "debug"];
|
|
114
153
|
|
|
115
154
|
for (const level of levels) {
|
|
116
|
-
const original = logger[level]
|
|
155
|
+
const original = logger[level]?.bind(logger);
|
|
117
156
|
|
|
118
157
|
logger[level] = (...args) => {
|
|
158
|
+
// Hard-disable debug when DEBUG is false
|
|
159
|
+
if (level === "debug" && !DEBUG_ENABLED) return;
|
|
160
|
+
|
|
119
161
|
const merged = args
|
|
120
162
|
.map((arg) => {
|
|
121
163
|
if (arg instanceof Error) {
|