From 84672f7081408111fb00fffb96872cdd2cb7a492 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 12 Jan 2016 00:41:06 +0100 Subject: [PATCH] log stats consistently, fixes #526 prune and create now both require --verbose --stats to show stats. it was implemented in this way (and not with print) so you can feed the stats data into the logging system, too. delete now says "Archive deleted" in verbose mode (for consistency, it already said "Repository deleted" when deleting a repo). also: add helpers.log_multi to comfortably and prettily output a block of log lines --- borg/archiver.py | 29 ++++++++++++++++++----------- borg/helpers.py | 17 +++++++++++++++++ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/borg/archiver.py b/borg/archiver.py index c07a324d8..9a175c3be 100644 --- a/borg/archiver.py +++ b/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): diff --git a/borg/helpers.py b/borg/helpers.py index 62b327816..5afadbb5a 100644 --- a/borg/helpers.py +++ b/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 @@ -971,3 +975,16 @@ def sysinfo(): info.append('Python: %s %s' % (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)