code: func (logger *Logger) Clone() *Logger {
  	clone := &Logger{}
  
  	// copy the outputs
  	logger.outputMutex.RLock()
  	clone.outputs = make([]*loggerOutputWrapper, len(logger.outputs))
  	copy(clone.outputs, logger.outputs)
  	logger.outputMutex.RUnlock()
  
  	// copy the fields
  	clone.Fields = make(map[string]interface{}, len(logger.Fields))
  	for k, v := range logger.Fields {
  		clone.Fields[k] = v
  	}
  	return clone
  }
docs: // Clone returns a new Logger object and copies over the configuration and all
  // fields along with it.