Factor out configuring of logging into a common function.

This commit is contained in:
Dan Helfman 2019-05-27 15:05:26 -07:00
parent 0f05f7ad93
commit e0e493c2f1
2 changed files with 24 additions and 11 deletions

View file

@ -19,7 +19,7 @@ from borgmatic.borg import list as borg_list
from borgmatic.borg import prune as borg_prune from borgmatic.borg import prune as borg_prune
from borgmatic.commands import hook from borgmatic.commands import hook
from borgmatic.config import checks, collect, convert, validate from borgmatic.config import checks, collect, convert, validate
from borgmatic.logger import get_logger, should_do_markup from borgmatic.logger import get_logger, should_do_markup, configure_logging
from borgmatic.signals import configure_signals from borgmatic.signals import configure_signals
from borgmatic.verbosity import verbosity_to_log_level from borgmatic.verbosity import verbosity_to_log_level
@ -469,7 +469,8 @@ def exit_with_help_link(): # pragma: no cover
''' '''
Display a link to get help and exit with an error code. Display a link to get help and exit with an error code.
''' '''
logger.critical('\nNeed some help? https://torsion.org/borgmatic/#issues') logger.critical('')
logger.critical('Need some help? https://torsion.org/borgmatic/#issues')
sys.exit(1) sys.exit(1)
@ -479,19 +480,17 @@ def main(): # pragma: no cover
try: try:
args = parse_arguments(*sys.argv[1:]) args = parse_arguments(*sys.argv[1:])
except ValueError as error: except ValueError as error:
logging.basicConfig(level=logging.CRITICAL, format='%(message)s') configure_logging(logging.CRITICAL)
logger.critical(error) logger.critical(error)
exit_with_help_link() exit_with_help_link()
except SystemExit:
configure_logging(logging.CRITICAL)
logger.critical('Error parsing arguments: {}'.format(' '.join(sys.argv)))
exit_with_help_link()
colorama.init(autoreset=True, strip=not should_do_markup(args.no_color)) colorama.init(autoreset=True, strip=not should_do_markup(args.no_color))
syslog_handler = logging.handlers.SysLogHandler(address='/dev/log') configure_logging(verbosity_to_log_level(args.verbosity))
syslog_handler.setFormatter(logging.Formatter('borgmatic: %(levelname)s %(message)s'))
logging.basicConfig(
level=verbosity_to_log_level(args.verbosity),
format='%(message)s',
handlers=(logging.StreamHandler(), syslog_handler),
)
if args.version: if args.version:
print(pkg_resources.require('borgmatic')[0].version) print(pkg_resources.require('borgmatic')[0].version)
@ -503,7 +502,8 @@ def main(): # pragma: no cover
summary_logs = tuple(collect_configuration_run_summary_logs(config_filenames, args)) summary_logs = tuple(collect_configuration_run_summary_logs(config_filenames, args))
logger.info('\nsummary:') logger.info('')
logger.info('summary:')
[logger.handle(log) for log in summary_logs if log.levelno >= logger.getEffectiveLevel()] [logger.handle(log) for log in summary_logs if log.levelno >= logger.getEffectiveLevel()]
if any(log.levelno == logging.CRITICAL for log in summary_logs): if any(log.levelno == logging.CRITICAL for log in summary_logs):

View file

@ -101,3 +101,16 @@ def color_text(color, message):
return message return message
return '{}{}{}'.format(color, message, colorama.Style.RESET_ALL) return '{}{}{}'.format(color, message, colorama.Style.RESET_ALL)
def configure_logging(log_level):
'''
Configure logging to go to both the console and syslog. Use the given log level for both.
'''
syslog_handler = logging.handlers.SysLogHandler(address='/dev/log')
syslog_handler.setFormatter(logging.Formatter('borgmatic: %(levelname)s %(message)s'))
logging.basicConfig(
level=log_level,
format='%(message)s',
handlers=(logging.StreamHandler(), syslog_handler),
)