Ver código fonte

Merge pull request #542 from ThomasWaldmann/fix-stats-logging

log stats consistently, fixes #526
TW 9 anos atrás
pai
commit
89169c3f87
2 arquivos alterados com 35 adições e 11 exclusões
  1. 18 11
      borg/archiver.py
  2. 17 0
      borg/helpers.py

+ 18 - 11
borg/archiver.py

@@ -21,7 +21,7 @@ from .helpers import Error, location_validator, format_time, format_file_size, \
     get_cache_dir, get_keys_dir, prune_within, prune_split, unhexlify, \
     Manifest, remove_surrogates, update_excludes, format_archive, check_extension_modules, Statistics, \
     dir_is_tagged, bigint_to_int, ChunkerParams, CompressionSpec, is_slow_msgpack, yes, sysinfo, \
-    EXIT_SUCCESS, EXIT_WARNING, EXIT_ERROR
+    EXIT_SUCCESS, EXIT_WARNING, EXIT_ERROR, log_multi
 from .logger import create_logger, setup_logging
 logger = create_logger()
 from .compress import Compressor, COMPR_BUFFER
@@ -37,6 +37,8 @@ has_lchflags = hasattr(os, 'lchflags')
 # default umask, overriden by --umask, defaults to read/write only for owner
 UMASK_DEFAULT = 0o077
 
+DASHES = '-' * 78
+
 
 class ToggleAction(argparse.Action):
     """argparse action to handle "toggle" flags easily
@@ -187,12 +189,12 @@ class Archiver:
                 archive.stats.show_progress(final=True)
             if args.stats:
                 archive.end = datetime.now()
-                print('-' * 78)
-                print(str(archive))
-                print()
-                print(str(archive.stats))
-                print(str(cache))
-                print('-' * 78)
+                log_multi(DASHES,
+                          str(archive),
+                          DASHES,
+                          str(archive.stats),
+                          str(cache),
+                          DASHES)
         return self.exit_code
 
     def _process(self, archive, cache, excludes, exclude_caches, exclude_if_present,
@@ -339,9 +341,12 @@ class Archiver:
             manifest.write()
             repository.commit(save_space=args.save_space)
             cache.commit()
+            logger.info("Archive deleted.")
             if args.stats:
-                logger.info(stats.summary.format(label='Deleted data:', stats=stats))
-                logger.info(str(cache))
+                log_multi(DASHES,
+                          stats.summary.format(label='Deleted data:', stats=stats),
+                          str(cache),
+                          DASHES)
         else:
             if not args.cache_only:
                 msg = []
@@ -495,8 +500,10 @@ class Archiver:
             repository.commit(save_space=args.save_space)
             cache.commit()
         if args.stats:
-            logger.info(stats.summary.format(label='Deleted data:', stats=stats))
-            logger.info(str(cache))
+            log_multi(DASHES,
+                      stats.summary.format(label='Deleted data:', stats=stats),
+                      str(cache),
+                      DASHES)
         return self.exit_code
 
     def do_upgrade(self, args):

+ 17 - 0
borg/helpers.py

@@ -18,6 +18,10 @@ import platform
 import time
 import unicodedata
 
+import logging
+from .logger import create_logger
+logger = create_logger()
+
 from datetime import datetime, timezone, timedelta
 from fnmatch import translate
 from operator import attrgetter
@@ -1014,3 +1018,16 @@ def sysinfo():
     info.append('Borg: %s Python: %s %s' % (borg_version, platform.python_implementation(), platform.python_version()))
     info.append('')
     return '\n'.join(info)
+
+
+def log_multi(*msgs, level=logging.INFO):
+    """
+    log multiple lines of text, each line by a separate logging call for cosmetic reasons
+
+    each positional argument may be a single or multiple lines (separated by \n) of text.
+    """
+    lines = []
+    for msg in msgs:
+        lines.extend(msg.splitlines())
+    for line in lines:
+        logger.log(level, line)