mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
165 lines
4.4 KiB
JavaScript
165 lines
4.4 KiB
JavaScript
const { test } = require('tap');
|
|
const fs = require('fs');
|
|
const os = require('os');
|
|
|
|
const EOL = os.EOL || '\n';
|
|
|
|
const osDelay = process.platform === 'win32' ? 400 : 200;
|
|
|
|
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('logLevelFilter.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(
|
|
'logLevelFilter-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(
|
|
'logLevelFilter-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();
|
|
}, osDelay);
|
|
});
|
|
|
|
batch.end();
|
|
});
|