seneca-log-filter
Version:
Seneca log filtering module
47 lines (40 loc) • 1.19 kB
JavaScript
const Util = require('./lib/util')
const Aliases = require('./lib/aliases')
const _ = require('lodash')
function logfilter (options) {
let level = options.level || 'info+'
let calculatedLevels = []
if (Util.level_exists(level)) {
calculatedLevels.push(level)
}
// Level + notation
else if (_.endsWith(level, '+')) {
calculatedLevels = Util.log_level_plus(level.substring(0, level.length - 1))
}
// No level nor level+... it must be a custom alias
else {
let processedAliases = Object.assign(Aliases, options.aliases)
let aliasInfo = processedAliases[level]
if (aliasInfo) {
let handled = _.get(aliasInfo, 'handled', true)
if (handled) {
calculatedLevels = aliasInfo.handler(options)
}
}
}
return function filter (data) {
if (calculatedLevels.indexOf(data.level) !== -1) {
let cloned = _.clone(data)
if (options['omit-metadata']) {
cloned = _.omit(cloned, ['seneca', 'level', 'when'])
}
if (options.omit && _.isArray(options.omit)) {
cloned = _.omit(cloned, options.omit)
}
return cloned
}
return null
}
}
module.exports = logfilter