1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-03-03 18:27:01 +00:00

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

log stats consistently, fixes #526
This commit is contained in:
TW 2016-01-14 14:33:53 +01:00
commit 89169c3f87
2 changed files with 35 additions and 11 deletions

View file

@ -21,7 +21,7 @@
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 @@
# 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 @@ def do_create(self, args):
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 @@ def do_delete(self, args):
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 @@ def do_prune(self, args):
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):

View file

@ -18,6 +18,10 @@ def get_terminal_size(fallback=(80, 24)):
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)