Mercurial > piecrust2
diff piecrust/publishing/base.py @ 954:d709429f02eb
publish: Add more options for logging, better feedback when it fails.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 05 Oct 2017 21:30:25 -0700 |
parents | 13e8b50a2113 |
children |
line wrap: on
line diff
--- a/piecrust/publishing/base.py Thu Oct 05 20:36:05 2017 -0700 +++ b/piecrust/publishing/base.py Thu Oct 05 21:30:25 2017 -0700 @@ -70,7 +70,8 @@ self.app = app def run(self, target, - force=False, preview=False, extra_args=None, log_file=None): + force=False, preview=False, extra_args=None, + log_file=None, log_debug_info=False, append_log_file=False): start_time = time.perf_counter() # Get publisher for this target. @@ -87,8 +88,15 @@ root_logger = logging.getLogger() if log_file and not preview: logger.debug("Adding file handler for: %s" % log_file) - hdlr = logging.FileHandler(log_file, mode='w', encoding='utf8') + mode = 'w' + if append_log_file: + mode = 'a' + hdlr = logging.FileHandler(log_file, mode=mode, encoding='utf8') root_logger.addHandler(hdlr) + + if log_debug_info: + _log_debug_info(target, force, preview, extra_args) + if not preview: logger.info("Deploying to %s" % target) else: @@ -122,6 +130,7 @@ (target, pub.PUBLISHER_NAME)) pub_start_time = time.perf_counter() + success = False ctx = PublishingContext() ctx.bake_out_dir = bake_out_dir ctx.bake_records = records @@ -129,7 +138,7 @@ ctx.preview = preview ctx.args = extra_args try: - pub.run(ctx) + success = pub.run(ctx) except Exception as ex: raise PublishingError( "Error publishing to target: %s" % target) from ex @@ -141,7 +150,13 @@ logger.info(format_timed( pub_start_time, "Ran publisher %s" % pub.PUBLISHER_NAME)) - logger.info(format_timed(start_time, 'Deployed to %s' % target)) + if success: + logger.info(format_timed(start_time, 'Deployed to %s' % target)) + return 0 + else: + logger.error(format_timed(start_time, 'Failed to deploy to %s' % + target)) + return 1 def find_publisher_class(app, name, is_scheme=False): @@ -159,3 +174,26 @@ return pub_cls.PUBLISHER_NAME return None + +def _log_debug_info(target, force, preview, extra_args): + import os + import sys + + logger.info("---- DEBUG INFO START ----") + logger.info("System:") + logger.info(" sys.argv=%s" % sys.argv) + logger.info(" sys.base_exec_prefix=%s" % sys.base_exec_prefix) + logger.info(" sys.base_prefix=%s" % sys.base_prefix) + logger.info(" sys.exec_prefix=%s" % sys.exec_prefix) + logger.info(" sys.executable=%s" % sys.executable) + logger.info(" sys.path=%s" % sys.path) + logger.info(" sys.platform=%s" % sys.platform) + logger.info(" sys.prefix=%s" % sys.prefix) + logger.info("Environment:") + logger.info(" cwd=%s" % os.getcwd()) + logger.info(" pid=%s" % os.getpid()) + logger.info("Variables:") + for k, v in os.environ.items(): + logger.info(" %s=%s" % (k, v)) + logger.info("---- DEBUG INFO END ----") +