mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
163 lines
4.3 KiB
JavaScript
163 lines
4.3 KiB
JavaScript
const { test } = require("tap");
|
|
const fs = require("fs");
|
|
const os = require("os");
|
|
|
|
const EOL = os.EOL || "\n";
|
|
|
|
function remove(filename) {
|
|
try {
|
|
fs.unlinkSync(filename);
|
|
} catch (e) {
|
|
// doesn't really matter if it failed
|
|
}
|
|
}
|
|
|
|
test("log4js logLevelFilter", batch => {
|
|
batch.test("appender", t => {
|
|
const log4js = require("../../lib/log4js");
|
|
const recording = require("../../lib/appenders/recording");
|
|
|
|
log4js.configure({
|
|
appenders: {
|
|
recorder: { type: "recording" },
|
|
filtered: {
|
|
type: "logLevelFilter",
|
|
appender: "recorder",
|
|
level: "ERROR"
|
|
}
|
|
},
|
|
categories: {
|
|
default: { appenders: ["filtered"], level: "debug" }
|
|
}
|
|
});
|
|
|
|
const logger = log4js.getLogger("logLevelTest");
|
|
logger.debug("this should not trigger an event");
|
|
logger.warn("neither should this");
|
|
logger.error("this should, though");
|
|
logger.fatal("so should this");
|
|
|
|
const logEvents = recording.replay();
|
|
|
|
t.test(
|
|
"should only pass log events greater than or equal to its own level",
|
|
assert => {
|
|
assert.equal(logEvents.length, 2);
|
|
assert.equal(logEvents[0].data[0], "this should, though");
|
|
assert.equal(logEvents[1].data[0], "so should this");
|
|
assert.end();
|
|
}
|
|
);
|
|
t.end();
|
|
});
|
|
|
|
batch.test("configure", t => {
|
|
const log4js = require("../../lib/log4js");
|
|
|
|
remove(`${__dirname}/logLevelFilter.log`);
|
|
remove(`${__dirname}/logLevelFilter-warnings.log`);
|
|
remove(`${__dirname}/logLevelFilter-debugs.log`);
|
|
|
|
t.teardown(() => {
|
|
remove(`${__dirname}/logLevelFilter.log`);
|
|
remove(`${__dirname}/logLevelFilter-warnings.log`);
|
|
remove(`${__dirname}/logLevelFilter-debugs.log`);
|
|
});
|
|
|
|
log4js.configure({
|
|
appenders: {
|
|
"warning-file": {
|
|
type: "file",
|
|
filename: "test/tap/logLevelFilter-warnings.log",
|
|
layout: { type: "messagePassThrough" }
|
|
},
|
|
warnings: {
|
|
type: "logLevelFilter",
|
|
level: "WARN",
|
|
appender: "warning-file"
|
|
},
|
|
"debug-file": {
|
|
type: "file",
|
|
filename: "test/tap/logLevelFilter-debugs.log",
|
|
layout: { type: "messagePassThrough" }
|
|
},
|
|
debugs: {
|
|
type: "logLevelFilter",
|
|
level: "TRACE",
|
|
maxLevel: "DEBUG",
|
|
appender: "debug-file"
|
|
},
|
|
tests: {
|
|
type: "file",
|
|
filename: "test/tap/logLevelFilter.log",
|
|
layout: {
|
|
type: "messagePassThrough"
|
|
}
|
|
}
|
|
},
|
|
categories: {
|
|
default: { appenders: ["tests", "warnings", "debugs"], level: "trace" }
|
|
}
|
|
});
|
|
const logger = log4js.getLogger("tests");
|
|
logger.debug("debug");
|
|
logger.info("info");
|
|
logger.error("error");
|
|
logger.warn("warn");
|
|
logger.debug("debug");
|
|
logger.trace("trace");
|
|
// wait for the file system to catch up
|
|
setTimeout(() => {
|
|
t.test("tmp-tests.log should contain all log messages", assert => {
|
|
fs.readFile(
|
|
`${__dirname}/logLevelFilter.log`,
|
|
"utf8",
|
|
(err, contents) => {
|
|
const messages = contents.trim().split(EOL);
|
|
assert.same(messages, [
|
|
"debug",
|
|
"info",
|
|
"error",
|
|
"warn",
|
|
"debug",
|
|
"trace"
|
|
]);
|
|
assert.end();
|
|
}
|
|
);
|
|
});
|
|
t.test(
|
|
"tmp-tests-warnings.log should contain only error and warning logs",
|
|
assert => {
|
|
fs.readFile(
|
|
`${__dirname}/logLevelFilter-warnings.log`,
|
|
"utf8",
|
|
(err, contents) => {
|
|
const messages = contents.trim().split(EOL);
|
|
assert.same(messages, ["error", "warn"]);
|
|
assert.end();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
t.test(
|
|
"tmp-tests-debugs.log should contain only trace and debug logs",
|
|
assert => {
|
|
fs.readFile(
|
|
`${__dirname}/logLevelFilter-debugs.log`,
|
|
"utf8",
|
|
(err, contents) => {
|
|
const messages = contents.trim().split(EOL);
|
|
assert.same(messages, ["debug", "debug", "trace"]);
|
|
assert.end();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
t.end();
|
|
}, 500);
|
|
});
|
|
|
|
batch.end();
|
|
});
|