8000 Merge pull request #1002 from rnd-debug/donot-create-appender-if-not-… · xaviernoder/log4js-node@4b0c6f4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4b0c6f4

Browse files
authored
Merge pull request log4js-node#1002 from rnd-debug/donot-create-appender-if-not-used
Donot create appender if not used
2 parents ff38084 + aabc15d commit 4b0c6f4

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

lib/appenders/index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,24 @@ const createAppender = (name, config) => {
8282
appender => getAppender(appender, config),
8383
levels
8484
);
85-
}, () => {});
85+
}, () => { });
8686
};
8787

8888
const setup = (config) => {
8989
appenders.clear();
9090
appendersLoading.clear();
91+
const usedAppenders = [];
92+
Object.values(config.categories).forEach(category => {
93+
usedAppenders.push(...category.appenders)
94+
});
9195
Object.keys(config.appenders).forEach((name) => {
92-
getAppender(name, config);
96+
if (usedAppenders.includes(name)) {
97+
getAppender(name, config);
98+
}
9399
});
94100
};
95101

96-
setup({ appenders: { out: { type: 'stdout' } } });
102+
setup({ appenders: { out: { type: 'stdout' } }, categories: { default: { appenders: ['out'], level: 'trace' } } });
97103

98104
configuration.addListener((config) => {
99105
configuration.throwExceptionIf(

test/tap/configuration-validation-test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,5 +410,26 @@ test("log4js configuration validation", batch => {
410410
}
411411
);
412412

413+
batch.test("should not create appender instance if not used in categories", t => {
414+
const used = {};
415+
const notUsed = {};
416+
const sandboxedLog4js = sandbox.require("../../lib/log4js", {
417+
requires: {
418+
cat: testAppender("meow", used),
419+
dog: testAppender("woof", notUsed)
420+
},
421+
ignoreMissing: true
422+
});
423+
424+
sandboxedLog4js.configure({
425+
appenders: { used: { type: "cat" }, notUsed: { type: "dog" } },
426+
categories: { default: { appenders: ["used"], level: "ERROR" } }
427+
});
428+
429+
t.ok(used.configureCalled);
430+
t.notOk(notUsed.configureCalled);
431+
t.end();
432+
});
433+
413434
batch.end();
414435
});

0 commit comments

Comments
 (0)
0