diff --git a/frappe/__init__.py b/frappe/__init__.py index 7664ac4c61..56017e2bc3 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -1562,7 +1562,7 @@ log_level = None def logger(module=None, with_more_info=True): '''Returns a python logger that uses StreamHandler''' from frappe.utils.logger import get_logger - return get_logger(module or 'default', with_more_info=with_more_info) + return get_logger(module=module, with_more_info=with_more_info) def log_error(message=None, title=_("Error")): '''Log error to Error Log''' diff --git a/frappe/core/doctype/scheduled_job_type/scheduled_job_type.py b/frappe/core/doctype/scheduled_job_type/scheduled_job_type.py index c179054550..765ae5fe93 100644 --- a/frappe/core/doctype/scheduled_job_type/scheduled_job_type.py +++ b/frappe/core/doctype/scheduled_job_type/scheduled_job_type.py @@ -84,7 +84,7 @@ class ScheduledJobType(Document): def log_status(self, status): # log file - frappe.logger(__name__).info('Scheduled Job {0}: {1} for {2}'.format(status, self.method, frappe.local.site)) + frappe.logger("scheduler").info('Scheduled Job {0}: {1} for {2}'.format(status, self.method, frappe.local.site)) self.update_scheduler_log(status) def update_scheduler_log(self, status): diff --git a/frappe/utils/error.py b/frappe/utils/error.py index c124410a7f..bb83815d18 100644 --- a/frappe/utils/error.py +++ b/frappe/utils/error.py @@ -21,7 +21,7 @@ def make_error_snapshot(exception): if frappe.conf.disable_error_snapshot: return - logger = frappe.logger(__name__, with_more_info=False) + logger = frappe.logger(with_more_info=False) try: error_id = '{timestamp:s}-{ip:s}-{hash:s}'.format( diff --git a/frappe/utils/logger.py b/frappe/utils/logger.py index e446b39ee0..5e202f87fb 100755 --- a/frappe/utils/logger.py +++ b/frappe/utils/logger.py @@ -15,35 +15,37 @@ import frappe default_log_level = logging.DEBUG site = getattr(frappe.local, 'site', None) -LOG_FILENAME = os.path.join('..', 'logs', 'frappe.log') +form_dict = getattr(frappe.local, 'form_dict', None) def get_logger(module, with_more_info=True): if module in frappe.loggers: return frappe.loggers[module] - formatter = logging.Formatter('[%(levelname)s] %(asctime)s | %(pathname)s:\n%(message)s') + if not module: + module = "frappe" + logfile = module + '.log' + LOG_FILENAME = os.path.join('..', 'logs', logfile) + + logger = logging.getLogger(module) + logger.setLevel(frappe.log_level or default_log_level) + logger.propagate = False + + formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(message)s') handler = RotatingFileHandler(LOG_FILENAME, maxBytes=100_000, backupCount=20) - handler.setFormatter(formatter) - + logger.addHandler(handler) +# if site: - SITELOG_FOLDER = os.path.join(site, 'logs') - SITELOG_FILENAME = os.path.join(SITELOG_FOLDER, 'frappe.log') - - if not os.path.exists(SITELOG_FOLDER): - os.mkdir(SITELOG_FOLDER) - - handler = RotatingFileHandler(SITELOG_FILENAME, maxBytes=100_000, backupCount=20) - handler.setFormatter(formatter) + SITELOG_FILENAME = os.path.join(site, 'logs', logfile) + site_handler = RotatingFileHandler(SITELOG_FILENAME, maxBytes=100_000, backupCount=20) + site_handler.setFormatter(formatter) + logger.addHandler(site_handler) if with_more_info: handler.addFilter(SiteContextFilter()) - logger = logging.getLogger(module) - logger.setLevel(frappe.log_level or default_log_level) - logger.addHandler(handler) - logger.propagate = False + handler.setFormatter(formatter) frappe.loggers[module] = logger diff --git a/frappe/utils/scheduler.py b/frappe/utils/scheduler.py index 596595a160..e05419805c 100755 --- a/frappe/utils/scheduler.py +++ b/frappe/utils/scheduler.py @@ -7,17 +7,24 @@ Events: monthly weekly """ +# imports - compatibility imports +from __future__ import print_function, unicode_literals -from __future__ import unicode_literals, print_function +# imports - standard imports +import os +import time -import frappe, os, time +# imports - third party imports import schedule -from frappe.utils import now_datetime, get_datetime -from frappe.utils import get_sites -from frappe.installer import update_site_config + +# imports - module imports +import frappe from frappe.core.doctype.user.user import STANDARD_USERS +from frappe.installer import update_site_config +from frappe.utils import get_datetime, get_sites, now_datetime from frappe.utils.background_jobs import get_jobs + DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S' def start_scheduler(): @@ -48,9 +55,16 @@ def enqueue_events_for_all_sites(): def enqueue_events_for_site(site): def log_and_raise(): - frappe.logger(__name__).error('Exception in Enqueue Events for Site {0}'.format(site) + - '\n' + frappe.get_traceback()) - raise # pylint: disable=misplaced-bare-raise + error_message = 'Exception in Enqueue Events for Site {0}\n{1}'.format(site, frappe.get_traceback()) + error_message = json.dumps({ + "type": "Exception", + "event": "Enqueue Events", + "site": site, + "traceback": frappe.get_traceback() + }) + + frappe.logger("scheduler").error(error_message) + SITELOG_FILENAME = os.path.join(site or "..", 'logs', 'schedule.log') try: frappe.init(site=site) @@ -60,10 +74,10 @@ def enqueue_events_for_site(site): enqueue_events(site=site) - frappe.logger(__name__).debug('Queued events for site {0}'.format(site)) + frappe.logger("scheduler").debug('Queued events for site {0}'.format(site)) except frappe.db.OperationalError as e: if frappe.db.is_access_denied(e): - frappe.logger(__name__).debug('Access denied for site {0}'.format(site)) + frappe.logger("scheduler").debug('Access denied for site {0}'.format(site)) else: log_and_raise() except: