const debug = require('debug')('log4js:noLogFilter'); /** * The function removes empty or null regexp from the array * @param {string[]} regexp * @returns {string[]} a filtered string array with not empty or null regexp */ function removeNullOrEmptyRegexp(regexp) { const filtered = regexp.filter((el) => el != null && el !== ''); return filtered; } /** * Returns a function that will exclude the events in case they match * with the regular expressions provided * @param {(string|string[])} filters contains the regexp that will be used for the evaluation * @param {*} appender * @returns {function} */ function noLogFilter(filters, appender) { return (logEvent) => { debug(`Checking data: ${logEvent.data} against filters: ${filters}`); if (typeof filters === 'string') { filters = [filters]; } filters = removeNullOrEmptyRegexp(filters); const regex = new RegExp(filters.join('|'), 'i'); if ( filters.length === 0 || logEvent.data.findIndex((value) => regex.test(value)) < 0 ) { debug('Not excluded, sending to appender'); appender(logEvent); } }; } function configure(config, layouts, findAppender) { const appender = findAppender(config.appender); return noLogFilter(config.exclude, appender); } module.exports.configure = configure;