mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
162 lines
4.5 KiB
JavaScript
162 lines
4.5 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();
|
|
});
|