baja-lite 1.8.15 → 1.8.17
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/event.js +21 -4
- package/logger.d.ts +1 -1
- package/logger.js +1 -1
- package/package.json +1 -1
package/event.js
CHANGED
|
@@ -78,17 +78,21 @@ function packPayload(args) {
|
|
|
78
78
|
*/
|
|
79
79
|
export function on(event, listener, opts) {
|
|
80
80
|
const bus = getEventBus();
|
|
81
|
-
if (opts?.unique && bus.listenerCount(event) > 0)
|
|
81
|
+
if (opts?.unique && bus.listenerCount(event) > 0) {
|
|
82
|
+
eventLog(`event ${event} already has listener, skip register`);
|
|
82
83
|
return;
|
|
84
|
+
}
|
|
83
85
|
if (opts?.once) {
|
|
84
86
|
const wrapper = (...args) => {
|
|
85
87
|
bus.off(event, wrapper);
|
|
86
88
|
listener(...args);
|
|
87
89
|
};
|
|
88
90
|
bus.on(event, wrapper);
|
|
91
|
+
eventLog(`event ${event} registered as once`);
|
|
89
92
|
}
|
|
90
93
|
else {
|
|
91
94
|
bus.on(event, listener);
|
|
95
|
+
eventLog(`event ${event} registered`);
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
@@ -115,9 +119,11 @@ export function off(event, listener) {
|
|
|
115
119
|
const bus = getEventBus();
|
|
116
120
|
if (listener) {
|
|
117
121
|
bus.off(event, listener);
|
|
122
|
+
eventLog(`event ${event} listener removed`);
|
|
118
123
|
}
|
|
119
124
|
else {
|
|
120
125
|
bus.removeAllListeners(event);
|
|
126
|
+
eventLog(`event ${event} all listeners removed`);
|
|
121
127
|
}
|
|
122
128
|
}
|
|
123
129
|
/**
|
|
@@ -163,9 +169,14 @@ export function trigger(event, args, opts) {
|
|
|
163
169
|
redis.publish(`${CHANNEL_PREFIX}${event}`, packPayload(a)).catch((err) => {
|
|
164
170
|
getLogger()?.warn?.(`event publish "${event}" failed: ${err?.message ?? err}`);
|
|
165
171
|
});
|
|
172
|
+
eventLog(`event ${event} published to remote`);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
eventLog(`event ${event} can't publish because redis is not configured`);
|
|
166
176
|
}
|
|
167
177
|
}
|
|
168
178
|
if (local) {
|
|
179
|
+
eventLog(`event ${event} emitted to local`);
|
|
169
180
|
return getEventBus().emit(event, ...a);
|
|
170
181
|
}
|
|
171
182
|
return false;
|
|
@@ -197,7 +208,7 @@ export async function initEventSubscriber() {
|
|
|
197
208
|
_subscriberReady = true;
|
|
198
209
|
const redis = getRedis();
|
|
199
210
|
if (!redis) {
|
|
200
|
-
getLogger()?.
|
|
211
|
+
getLogger()?.error?.('event subscriber: Redis not configured, skip');
|
|
201
212
|
return;
|
|
202
213
|
}
|
|
203
214
|
try {
|
|
@@ -220,10 +231,16 @@ export async function initEventSubscriber() {
|
|
|
220
231
|
}
|
|
221
232
|
});
|
|
222
233
|
await sub.psubscribe(SUBSCRIBE_PATTERN);
|
|
223
|
-
getLogger()?.
|
|
234
|
+
getLogger()?.info?.('event subscriber: Redis bridge ready');
|
|
224
235
|
}
|
|
225
236
|
catch (err) {
|
|
226
|
-
getLogger()?.
|
|
237
|
+
getLogger()?.error?.(`event subscriber init failed: ${err?.message ?? err}`);
|
|
227
238
|
_subscriberReady = false; // 允许重试
|
|
228
239
|
}
|
|
229
240
|
}
|
|
241
|
+
/** @internal 输出缓存分类日志(仅当 setLogLevels 包含 'cache' 时生效) */
|
|
242
|
+
function eventLog(message, ...params) {
|
|
243
|
+
const logger = globalThis[_LoggerService];
|
|
244
|
+
// pino-pretty 的 messageFormat 会根据 level=24 自动添加 [CACHE] 前缀
|
|
245
|
+
logger.debugCategory?.('event', message, ...params);
|
|
246
|
+
}
|
package/logger.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - log: ['debug'] 看所有 debug(包括 sql/cache)
|
|
9
9
|
* - log: ['info'] 标准行为,只看 info+
|
|
10
10
|
*/
|
|
11
|
-
export declare const LOG_LEVELS: readonly ["verbose", "sql", "cache", "debug", "info", "log", "warn", "error", "fatal"];
|
|
11
|
+
export declare const LOG_LEVELS: readonly ["verbose", "sql", "cache", "debug", "info", "log", "warn", "error", "fatal", "event"];
|
|
12
12
|
export type LogLevel = (typeof LOG_LEVELS)[number];
|
|
13
13
|
export interface LoggerService {
|
|
14
14
|
log(message: any, ...optionalParams: any[]): any;
|
package/logger.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - log: ['debug'] 看所有 debug(包括 sql/cache)
|
|
9
9
|
* - log: ['info'] 标准行为,只看 info+
|
|
10
10
|
*/
|
|
11
|
-
export const LOG_LEVELS = ["verbose", "sql", "cache", "debug", "info", "log", "warn", "error", "fatal"];
|
|
11
|
+
export const LOG_LEVELS = ["verbose", "sql", "cache", "debug", "info", "log", "warn", "error", "fatal", "event"];
|
|
12
12
|
/**
|
|
13
13
|
* baja-lite 专用 Logger。接口兼容 NestJS LoggerService,可直接在 NestJS 项目中替换使用。
|
|
14
14
|
*
|