From e8fdca8698f3a16f2784bef8f0c4ad653908775a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20R=C3=ADos?= Date: Wed, 23 Mar 2022 05:07:12 -0300 Subject: [PATCH] feat(logger): implement `stream_only` to use StreamHandler instead of RotatingFileHandler (#16274) * feat: implement valued parameter 'stream_only' in 'get_logger()' in order to stream logs into stderr instead rotating log files. Co-authored-by: gavin --- frappe/utils/logger.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frappe/utils/logger.py b/frappe/utils/logger.py index 617572deb7..1291abbf47 100755 --- a/frappe/utils/logger.py +++ b/frappe/utils/logger.py @@ -13,7 +13,7 @@ from frappe.utils import get_sites default_log_level = logging.DEBUG -def get_logger(module=None, with_more_info=False, allow_site=True, filter=None, max_size=100_000, file_count=20): +def get_logger(module=None, with_more_info=False, allow_site=True, filter=None, max_size=100_000, file_count=20, stream_only=False): """Application Logger for your given module Args: @@ -23,6 +23,7 @@ def get_logger(module=None, with_more_info=False, allow_site=True, filter=None, filter (function, optional): Add a filter function for your logger. Defaults to None. max_size (int, optional): Max file size of each log file in bytes. Defaults to 100_000. file_count (int, optional): Max count of log files to be retained via Log Rotation. Defaults to 20. + stream_only (bool, optional): Whether to stream logs only to stderr (True) or use log files (False). Defaults to False. Returns: : Returns a Python logger object with Site and Bench level logging capabilities. @@ -54,11 +55,14 @@ def get_logger(module=None, with_more_info=False, allow_site=True, filter=None, logger.propagate = False formatter = logging.Formatter("%(asctime)s %(levelname)s {0} %(message)s".format(module)) - handler = RotatingFileHandler(log_filename, maxBytes=max_size, backupCount=file_count) + if stream_only: + handler = logging.StreamHandler() + else: + handler = RotatingFileHandler(log_filename, maxBytes=max_size, backupCount=file_count) handler.setFormatter(formatter) logger.addHandler(handler) - if site: + if site and not stream_only: sitelog_filename = os.path.join(site, "logs", logfile) site_handler = RotatingFileHandler(sitelog_filename, maxBytes=max_size, backupCount=file_count) site_handler.setFormatter(formatter)