              "Copying into Groups" if self.args.keep_original
              else "Moving into Groups"
          )
  
          print("Total groups found: {}".format(len(bins)))
          for i in tqdm(range(len(bins)), desc=description, file=sys.stdout):
              for j in range(len(bins[i])):
                  src = bins[i][j]
                  src_basename = os.path.basename(src)
  
 
</s> remove                 print(err)
                print('fail to rename {}'.format(src))
 </s> add                 logger.error(err)
                logger.error('fail to rename %s', src) </s> remove         print("Moving {} frame(s) to {}".format(len(items_output),
                                                output_folder))
 </s> add         logger.info("Moving %s frame(s) to '%s'", len(items_output), output_folder) </s> remove     def set_actions(self):
        """ Compile the actions to be performed into a list """
        postprocess_items = self.get_items()
        actions = list()
        for action, options in postprocess_items.items():
            options = dict() if options is None else options
            args = options.get("args", tuple())
            kwargs = options.get("kwargs", dict())
            args = args if isinstance(args, tuple) else tuple()
            kwargs = kwargs if isinstance(kwargs, dict) else dict()
            kwargs["verbose"] = self.verbose
            task = globals()[action](*args, **kwargs)
            actions.append(task)

        for action in actions:
            action_name = camel_case_split(action.__class__.__name__)
            print("Adding post processing item: "
                  "{}".format(" ".join(action_name)))

        return actions

 </s> add  </s> remove         if self.verbose and self.scale < 1.0:
            print("Resizing image from {}x{} to {}.".format(
                str(width), str(height), "x".join(str(i) for i in dims)))
 </s> add         if self.scale < 1.0:
            logger.verbose("Resizing image from %sx%s to %s.",
                           width, height, "x".join(str(i) for i in dims))
        logger.info("Total groups found: %s", len(bins))
              "Copying into Groups" if self.args.keep_original
              else "Moving into Groups"
          )
  
        logger.info("Total groups found: %s", len(bins))
          for i in tqdm(range(len(bins)), desc=description, file=sys.stdout):
              for j in range(len(bins[i])):
                  src = bins[i][j]
                  src_basename = os.path.basename(src)
  
keep keep keep keep replace keep keep keep keep keep
 Logging (#541)

* Convert prints to logger. Further logging improvements. Tidy  up

* Fix system verbosity. Allow SystemExit

* Fix reload extract bug

* Child Traceback handling

* Safer shutdown procedure

* Add shutdown event to queue manager

* landmarks_as_xy > property. GUI notes + linting. Aligner bugfix

* fix FaceFilter. Enable nFilter when no Filter is supplied

* Fix blurry face filter

* Continue on IO error. Better error handling

* Explicitly print stack trace tocrash log

* Windows Multiprocessing bugfix

* Add git info and conda version to crash log

* Windows/Anaconda mp bugfix

* Logging fixes for training 
tools/sort.py