mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
const { test } = require("tap");
|
|
const cluster = require("cluster");
|
|
const log4js = require("../../lib/log4js");
|
|
const recorder = require("../../lib/appenders/recording");
|
|
|
|
cluster.removeAllListeners();
|
|
|
|
log4js.configure({
|
|
appenders: {
|
|
vcr: { type: "recording" }
|
|
},
|
|
categories: { default: { appenders: ["vcr"], level: "debug" } },
|
|
disableClustering: true
|
|
});
|
|
|
|
if (cluster.isMaster) {
|
|
cluster.fork();
|
|
|
|
const masterLogger = log4js.getLogger("master");
|
|
const masterPid = process.pid;
|
|
masterLogger.info("this is master");
|
|
|
|
cluster.on("exit", () => {
|
|
const logEvents = recorder.replay();
|
|
|
|
test("cluster master", batch => {
|
|
batch.test("only master events should be logged", t => {
|
|
t.equal(logEvents.length, 1);
|
|
t.equal(logEvents[0].categoryName, "master");
|
|
t.equal(logEvents[0].pid, masterPid);
|
|
t.equal(logEvents[0].data[0], "this is master");
|
|
t.end();
|
|
});
|
|
|
|
batch.end();
|
|
});
|
|
});
|
|
} else {
|
|
const workerLogger = log4js.getLogger("worker");
|
|
workerLogger.info("this is worker", new Error("oh dear"));
|
|
|
|
const workerEvents = recorder.replay();
|
|
test("cluster worker", batch => {
|
|
batch.test("should send events to its own appender", t => {
|
|
t.equal(workerEvents.length, 1);
|
|
t.equal(workerEvents[0].categoryName, "worker");
|
|
t.equal(workerEvents[0].data[0], "this is worker");
|
|
t.type(workerEvents[0].data[1], "Error");
|
|
t.match(workerEvents[0].data[1].stack, "Error: oh dear");
|
|
t.end();
|
|
});
|
|
batch.end();
|
|
});
|
|
// test sending a cluster-style log message
|
|
process.send({ topic: "log4js:message", data: { cheese: "gouda" } });
|
|
cluster.worker.disconnect();
|
|
}
|