Skip to content

Commit a36147a

Browse files
committed
simplify event routing and fix tail
1 parent 6b3c574 commit a36147a

File tree

1 file changed

+44
-57
lines changed

1 file changed

+44
-57
lines changed

packages/monitor/lib/app-log-router.js

Lines changed: 44 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pm2 from "pm2";
22
import path from "path";
3-
import Tail from "tail";
3+
import { Tail } from "tail";
44
import autoBind from "auto-bind";
55
import { SubEmitterSocket } from "axon"; // used by PM2
66
import { Logger, LogManager } from "@bluecadet/launchpad-utils";
@@ -54,34 +54,13 @@ export class LogRelay {
5454
}
5555

5656
/**
57-
* @param {SubEmitterSocket} _pm2Bus
57+
* @param {string} _eventType
58+
* @param {*} _eventData
5859
*/
59-
connectToBus(_pm2Bus) {
60-
// Implement this fn in all child classes
60+
handleEvent(_eventType, _eventData) {
61+
// implement this fn in all child classes
6162
throw new Error("not implemented");
6263
}
63-
64-
/**
65-
* @param {SubEmitterSocket} _pm2Bus
66-
*/
67-
disconnectFromBus(_pm2Bus) {
68-
// Implement this fn in all child classes
69-
throw new Error("not implemented");
70-
}
71-
72-
/**
73-
* Higher order function for filtering out events that are not related to this relay
74-
* @protected
75-
* @param {function(*):void} handler
76-
* @returns {function(*):void}
77-
*/
78-
filterEvents = (handler) => {
79-
const wrappedHandler = (eventData) => {
80-
if (eventData?.process?.name !== this._appOptions.pm2.name) return;
81-
handler.bind(this)(eventData);
82-
};
83-
return wrappedHandler;
84-
};
8564
}
8665

8766
export class FileLogRelay extends LogRelay {
@@ -119,19 +98,18 @@ export class FileLogRelay extends LogRelay {
11998
}
12099

121100
/**
122-
* @param {SubEmitterSocket} pm2Bus
123-
*/
124-
connectToBus(pm2Bus) {
125-
pm2Bus.on("online", this.filterEvents(this._handleOnline));
126-
pm2Bus.on("exit", this.filterEvents(this._handleOffline));
127-
}
128-
129-
/**
130-
* @param {SubEmitterSocket} pm2Bus
101+
* @param {string} eventType
102+
* @param {*} eventData
131103
*/
132-
disconnectFromBus(pm2Bus) {
133-
pm2Bus.off("online");
134-
pm2Bus.off("exit");
104+
handleEvent(eventType, eventData) {
105+
switch (eventType) {
106+
case "process:event":
107+
if (eventData.event === "online") this._handleOnline();
108+
else if (eventData.event === "exit") this._handleOffline();
109+
break;
110+
default:
111+
break;
112+
}
135113
}
136114

137115
/** @private */
@@ -141,7 +119,7 @@ export class FileLogRelay extends LogRelay {
141119
fsWatchOptions: { interval: 100 },
142120
};
143121
const outFilepath = this._appOptions.pm2.output;
144-
const errFilepath = this._appOptions.pm2.output;
122+
const errFilepath = this._appOptions.pm2.error;
145123

146124
if (this._outTail) {
147125
this._outTail.unwatch();
@@ -221,19 +199,20 @@ export class BusLogRelay extends LogRelay {
221199
}
222200

223201
/**
224-
* @param {SubEmitterSocket} pm2Bus
225-
*/
226-
connectToBus(pm2Bus) {
227-
pm2Bus.on("log:out", this.filterEvents(this._handleBusLogOut));
228-
pm2Bus.on("log:err", this.filterEvents(this._handleBusLogErr));
229-
}
230-
231-
/**
232-
* @param {SubEmitterSocket} pm2Bus
202+
* @param {string} eventType
203+
* @param {*} eventData
233204
*/
234-
disconnectFromBus(pm2Bus) {
235-
pm2Bus.off("log:out");
236-
pm2Bus.off("log:err");
205+
handleEvent(eventType, eventData) {
206+
switch (eventType) {
207+
case "log:out":
208+
this._handleBusLogOut(eventData);
209+
break;
210+
case "log:err":
211+
this._handleBusLogErr(eventData);
212+
break;
213+
default:
214+
break;
215+
}
237216
}
238217

239218
/**
@@ -317,17 +296,25 @@ export default class AppLogRouter {
317296
* @param {SubEmitterSocket} pm2Bus
318297
*/
319298
connectToBus(pm2Bus) {
320-
this._logRelays.forEach((relay) => {
321-
relay.connectToBus(pm2Bus);
322-
});
299+
pm2Bus.on("*", this._handleEvent);
323300
}
324301

325302
/**
326303
* @param {SubEmitterSocket} pm2Bus
327304
*/
328305
disconnectFromBus(pm2Bus) {
329-
this._logRelays.forEach((relay) => {
330-
relay.disconnectFromBus(pm2Bus);
331-
});
306+
pm2Bus.off("*");
307+
}
308+
309+
/**
310+
* @private
311+
* @param {string} eventType
312+
* @param {*} eventData
313+
*/
314+
_handleEvent(eventType, eventData) {
315+
if (!eventData?.process?.name) return;
316+
this._logRelays
317+
.get(eventData.process.name)
318+
?.handleEvent(eventType, eventData);
332319
}
333320
}

0 commit comments

Comments
 (0)