function ChildLogger()

in child-logger.js [32:82]


function ChildLogger(config) {
    this.mainLogger = config.mainLogger;
    this.path = config.path;
    if (config.extendMeta && !(config.meta || config.metaFilter)) {
        throw errors.MetaRequired;
    }
    this.extendMeta = config.extendMeta;
    this.meta = config.meta || {};
    this.strict = config.strict;
    this.metaFilter = config.metaFilter || [];
    this.levels = config.levels || defaultLevels;

    this.metaFilter.forEach(function validateFilter(filter) {
        if (!filter || !filter.object || typeof filter.object !== 'object') {
            throw errors.FilterObjectRequired();
        }
        if (!filter.mappings || typeof filter.mappings !== 'object') {
            throw errors.FilterMappingsRequired();
        }
        Object.keys(filter.mappings).forEach(function validateMappings(srcName) {
            var dstName = filter.mappings[srcName];
            if (typeof dstName !== 'string') {
                throw errors.FilterBadDst();
            }
        });
    });

    if (config.extendMeta && config.mergeParentMeta) {
        this.meta = xtend(this.mainLogger.meta, this.meta);
        if (this.mainLogger.metaFilter) {
            var mergedMetaFilters = [];
            mergedMetaFilters.push.apply(mergedMetaFilters, this.mainLogger.metaFilter);
            mergedMetaFilters.push.apply(mergedMetaFilters, this.metaFilter);
            this.metaFilter = mergedMetaFilters;
        }
    }

    Object.keys(this.levels).forEach(function (levelName) {
        if (!this.mainLogger.levels.hasOwnProperty(levelName)) {
            if (this.strict) {
                throw errors.LevelRequired({level: levelName});
            } else {
                this[levelName] = noop;
                this.mainLogger.warn('Child Logger Disabled level',
                    {level: levelName});
            }
        } else {
            this[levelName] = makeLogMethod(levelName);
        }
    }, this);
}