mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
128 lines
4.1 KiB
JavaScript
128 lines
4.1 KiB
JavaScript
const { test } = require("tap");
|
|
const debug = require("debug");
|
|
const sandbox = require("@log4js-node/sandboxed-module");
|
|
|
|
test("default settings", batch => {
|
|
const originalListener = process.listeners("warning")[process.listeners("warning").length - 1];
|
|
const warningListener = error => {
|
|
if (error.name === "DeprecationWarning") {
|
|
if (error.code.startsWith("log4js-node-DEP0001") || error.code.startsWith("log4js-node-DEP0002")) {
|
|
return;
|
|
}
|
|
}
|
|
originalListener(error);
|
|
};
|
|
process.off("warning", originalListener);
|
|
process.on("warning", warningListener);
|
|
|
|
const debugWasEnabled = debug.enabled("log4js:appenders");
|
|
const debugLogs = [];
|
|
const originalWrite = process.stderr.write;
|
|
process.stderr.write = (string, encoding, fd) => {
|
|
debugLogs.push(string);
|
|
if (debugWasEnabled) {
|
|
originalWrite.apply(process.stderr, [string, encoding, fd]);
|
|
}
|
|
};
|
|
const originalNamespace = debug.disable();
|
|
debug.enable(`${originalNamespace}, log4js:appenders`);
|
|
|
|
batch.teardown(async () => {
|
|
// next event loop so that past warnings will not be printed
|
|
setImmediate(() => {
|
|
process.off("warning", warningListener);
|
|
process.on("warning", originalListener);
|
|
});
|
|
process.stderr.write = originalWrite;
|
|
debug.enable(originalNamespace);
|
|
});
|
|
|
|
const output = [];
|
|
const log4js = sandbox.require("../../lib/log4js", {
|
|
requires: {
|
|
"./appenders/stdout": {
|
|
name: "stdout",
|
|
appender() { // deprecated
|
|
return function(evt) {
|
|
output.push(evt);
|
|
};
|
|
},
|
|
shutdown() { // deprecated
|
|
},
|
|
configure() {
|
|
return this.appender();
|
|
}
|
|
},
|
|
debug
|
|
}
|
|
});
|
|
|
|
let logger;
|
|
|
|
batch.test("should call configure() on getLogger() if not configured", t => {
|
|
const DEP0001 = debugLogs.filter((e) => e.indexOf("log4js-node-DEP0001") > -1).length;
|
|
const DEP0002 = debugLogs.filter((e) => e.indexOf("log4js-node-DEP0002") > -1).length;
|
|
logger = log4js.getLogger("default-settings");
|
|
t.equal(
|
|
debugLogs.filter((e) => e.indexOf("log4js-node-DEP0001") > -1).length,
|
|
DEP0001 + 1,
|
|
"deprecation log4js-node-DEP0001 emitted"
|
|
);
|
|
t.equal(
|
|
debugLogs.filter((e) => e.indexOf("log4js-node-DEP0002") > -1).length,
|
|
DEP0002 + 1,
|
|
"deprecation log4js-node-DEP0002 emitted"
|
|
);
|
|
t.end();
|
|
});
|
|
|
|
batch.test("nothing should be logged until level is set or configure() is called", t => {
|
|
const originalLevel = logger.level;
|
|
t.equal(
|
|
originalLevel.levelStr,
|
|
"OFF",
|
|
"default logger.level should be OFF"
|
|
);
|
|
|
|
logger.info("This should not be logged yet.");
|
|
t.equal(output.length, 0, "nothing should be logged");
|
|
|
|
t.test("after level is set", assert => {
|
|
logger.level = "debug";
|
|
logger.info("This should be logged.");
|
|
assert.equal(output.length, 1, "should log the message if level is set");
|
|
assert.equal(output[output.length - 1].data[0], "This should be logged.");
|
|
logger.level = originalLevel;
|
|
assert.end();
|
|
});
|
|
|
|
t.test("after configure() is called", assert => {
|
|
const DEP0001 = debugLogs.filter((e) => e.indexOf("log4js-node-DEP0001") > -1).length;
|
|
const DEP0002 = debugLogs.filter((e) => e.indexOf("log4js-node-DEP0002") > -1).length;
|
|
log4js.configure({
|
|
appenders: { stdout: { type: "stdout" } },
|
|
categories: { default: { appenders: ["stdout"], level: "debug" } }
|
|
});
|
|
assert.equal(
|
|
debugLogs.filter((e) => e.indexOf("log4js-node-DEP0001") > -1).length,
|
|
DEP0001 + 1,
|
|
"deprecation log4js-node-DEP0001 emitted"
|
|
);
|
|
assert.equal(
|
|
debugLogs.filter((e) => e.indexOf("log4js-node-DEP0002") > -1).length,
|
|
DEP0002 + 1,
|
|
"deprecation log4js-node-DEP0002 emitted"
|
|
);
|
|
|
|
logger.info("This should go to stdout.");
|
|
assert.equal(output.length, 2, "should log the message after configure() is called");
|
|
assert.equal(output[output.length - 1].data[0], "This should go to stdout.");
|
|
assert.end();
|
|
});
|
|
|
|
t.end();
|
|
});
|
|
|
|
batch.end();
|
|
});
|