feat: override site name via _site

added filter parameter for logger
This commit is contained in:
Gavin D'souza 2020-07-27 17:13:18 +05:30
parent c87d598480
commit ad1152f8e8
2 changed files with 11 additions and 9 deletions

View file

@ -1559,10 +1559,10 @@ def get_doctype_app(doctype):
loggers = {}
log_level = None
def logger(module=None, with_more_info=False, _site=None):
def logger(module=None, with_more_info=False, _site=None, filter=None):
'''Returns a python logger that uses StreamHandler'''
from frappe.utils.logger import get_logger
return get_logger(module=module, with_more_info=with_more_info, _site=_site)
return get_logger(module=module, with_more_info=with_more_info, _site=_site, filter=filter)
def log_error(message=None, title=_("Error")):
'''Log error to Error Log'''

View file

@ -17,22 +17,20 @@ default_log_level = logging.DEBUG
site = getattr(frappe.local, 'site', None)
def get_logger(module, with_more_info=False, _site=None):
def get_logger(module, with_more_info=False, _site=None, filter=None):
"""Application Logger for your given module
Args:
module (str): Name of your logger and consequently your log file.
with_more_info (bool, optional): Will log the form dict using the SiteContextFilter. Defaults to False.
_site (str, optional): If set, validates the current site context with the passed value. The `frappe.web` logger uses this to determine that the application is logging information related to the logger called. Defaults to None.
_site (str, optional): Overrides the global site variable set in this scope. Defaults to None.
filter (function, optional): Add a filter function for your logger
Returns:
<class 'logging.Logger'>: Returns a Python logger object with Site and Bench level logging capabilities.
"""
global site
def allow_site():
return (_site and _site == site) or bool(site)
if module in frappe.loggers:
return frappe.loggers[module]
@ -42,6 +40,7 @@ def get_logger(module, with_more_info=False, _site=None):
logfile = module + '.log'
site = getattr(frappe.local, 'site', None)
equivalent_site = _site or site
LOG_FILENAME = os.path.join('..', 'logs', logfile)
logger = logging.getLogger(module)
@ -52,8 +51,8 @@ def get_logger(module, with_more_info=False, _site=None):
handler = RotatingFileHandler(LOG_FILENAME, maxBytes=100_000, backupCount=20)
logger.addHandler(handler)
if allow_site():
SITELOG_FILENAME = os.path.join(site, 'logs', logfile)
if equivalent_site:
SITELOG_FILENAME = os.path.join(equivalent_site, 'logs', logfile)
site_handler = RotatingFileHandler(SITELOG_FILENAME, maxBytes=100_000, backupCount=20)
site_handler.setFormatter(formatter)
logger.addHandler(site_handler)
@ -61,6 +60,9 @@ def get_logger(module, with_more_info=False, _site=None):
if with_more_info:
handler.addFilter(SiteContextFilter())
if filter:
logger.addFilter(filter)
handler.setFormatter(formatter)
frappe.loggers[module] = logger