function(conf, bitwise, parent) {
  EventEmitter.call(this);
  conf = conf || {};
  constants(this);
  this.keys = keys;
  this.bitwise = (bitwise === true);
  this.configure();
  var cstreams = parent && conf.streams;
  var streams = conf.streams, stream = conf.stream;
  streams = streams || this.getDefaultStream(conf);
  delete conf.streams;
  delete conf.stream;
  var target = parent ? merge(parent.conf, {}) : merge(defaults, {});
  this.conf = merge(conf, target);
  if(typeof this.conf.name !== 'string' || !this.conf.name.length) {
    throw new Error('Logger name \'' + this.conf.name + '\' is invalid');
  }
  this.name = this.conf.name;
  conf.streams = streams;
  if(stream) conf.stream = stream;
  this.pid = this.conf.pid || process.pid;
  this.hostname = this.conf.hostname || os.hostname();
  this.fields = {};
  this.streams = [];
  if(parent && cstreams) {
    streams = Array.isArray(streams) ? streams : [streams];
    streams = streams.concat(conf.streams);
  }
  this.initialize(streams);
}
function(conf, bitwise, parent) {
  EventEmitter.call(this);
  conf = conf || {};
  constants(this);
  this.keys = keys;
  this.bitwise = (bitwise === true);
  this.configure();
  var cstreams = parent && conf.streams;
  var streams = conf.streams, stream = conf.stream;
  streams = streams || this.getDefaultStream(conf);
  delete conf.streams;
  delete conf.stream;
  var target = parent ? merge(parent.conf, {}) : merge(defaults, {});
  this.conf = merge(conf, target);
  if(typeof this.conf.name !== 'string' || !this.conf.name.length) {
    throw new Error('Logger name \'' + this.conf.name + '\' is invalid');
  }
  this.name = this.conf.name;
  conf.streams = streams;
  if(stream) conf.stream = stream;
  this.pid = this.conf.pid || process.pid;
  this.hostname = this.conf.hostname || os.hostname();
  this.fields = {};
  this.streams = [];
  if(parent && cstreams) {
    streams = Array.isArray(streams) ? streams : [streams];
    streams = streams.concat(conf.streams);
  }
  this.initialize(streams);
}
function ( conf , bitwise , parent ) { EventEmitter . call ( this ) ; conf = conf || { } ; constants ( this ) ; this . keys = keys ; this . bitwise = ( bitwise === true ) ; this . configure ( ) ; var cstreams = parent && conf . streams ; var streams = conf . streams , stream = conf . stream ; streams = streams || this . getDefaultStream ( conf ) ; delete conf . streams ; delete conf . stream ; var target = parent ? merge ( parent . conf , { } ) : merge ( defaults , { } ) ; this . conf = merge ( conf , target ) ; if ( typeof this . conf . name !== 'string' || ! this . conf . name . length ) { throw new Error ( 'Logger name \'' + this . conf . name + '\' is invalid' ) ; } this . name = this . conf . name ; conf . streams = streams ; if ( stream ) conf . stream = stream ; this . pid = this . conf . pid || process . pid ; this . hostname = this . conf . hostname || os . hostname ( ) ; this . fields = { } ; this . streams = [ ] ; if ( parent && cstreams ) { streams = Array . isArray ( streams ) ? streams : [ streams ] ; streams = streams . concat ( conf . streams ) ; } this . initialize ( streams ) ; }
Create a Logger instance.

@param conf The logger configuration.
@param bitwise A boolean indicating that log levels
should use bitwise operators.
@param parent A parent logger that owns this logger.
Create a Logger instance .