diff --git a/httprunner/cli.py b/httprunner/cli.py index a8a368a7..7814de91 100644 --- a/httprunner/cli.py +++ b/httprunner/cli.py @@ -37,6 +37,9 @@ def main_hrun(): parser.add_argument( '--log-level', default='INFO', help="Specify logging level, default is INFO.") + parser.add_argument( + '--log-file', + help="Write logs to specified file path.") parser.add_argument( '--dot-env-path', help="Specify .env file path, which is useful for keeping production credentials.") @@ -54,7 +57,7 @@ def main_hrun(): help="Prettify JSON testset format.") args = parser.parse_args() - logger.setup_logger(args.log_level) + logger.setup_logger(args.log_level, args.log_file) if is_py2: logger.log_warning(get_python2_retire_msg()) diff --git a/httprunner/logger.py b/httprunner/logger.py index 9ea0700d..68d0f7db 100644 --- a/httprunner/logger.py +++ b/httprunner/logger.py @@ -16,7 +16,7 @@ log_colors_config = { 'CRITICAL': 'red', } -def setup_logger(log_level): +def setup_logger(log_level, log_file=None): """setup root logger with ColoredFormatter.""" level = getattr(logging, log_level.upper(), None) if not level: @@ -34,7 +34,11 @@ def setup_logger(log_level): log_colors=log_colors_config ) - handler = logging.StreamHandler() + if log_file: + handler = logging.FileHandler(log_file) + else: + handler = logging.StreamHandler() + handler.setFormatter(formatter) logging.root.addHandler(handler) logging.root.setLevel(level)