moduleversion-14
@@ -1562,7 +1562,7 @@ log_level = None | |||||
def logger(module=None, with_more_info=True): | def logger(module=None, with_more_info=True): | ||||
'''Returns a python logger that uses StreamHandler''' | '''Returns a python logger that uses StreamHandler''' | ||||
from frappe.utils.logger import get_logger | 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")): | def log_error(message=None, title=_("Error")): | ||||
'''Log error to Error Log''' | '''Log error to Error Log''' | ||||
@@ -84,7 +84,7 @@ class ScheduledJobType(Document): | |||||
def log_status(self, status): | def log_status(self, status): | ||||
# log file | # 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) | self.update_scheduler_log(status) | ||||
def update_scheduler_log(self, status): | def update_scheduler_log(self, status): | ||||
@@ -21,7 +21,7 @@ def make_error_snapshot(exception): | |||||
if frappe.conf.disable_error_snapshot: | if frappe.conf.disable_error_snapshot: | ||||
return | return | ||||
logger = frappe.logger(__name__, with_more_info=False) | |||||
logger = frappe.logger(with_more_info=False) | |||||
try: | try: | ||||
error_id = '{timestamp:s}-{ip:s}-{hash:s}'.format( | error_id = '{timestamp:s}-{ip:s}-{hash:s}'.format( | ||||
@@ -15,35 +15,37 @@ import frappe | |||||
default_log_level = logging.DEBUG | default_log_level = logging.DEBUG | ||||
site = getattr(frappe.local, 'site', None) | 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): | def get_logger(module, with_more_info=True): | ||||
if module in frappe.loggers: | if module in frappe.loggers: | ||||
return frappe.loggers[module] | return frappe.loggers[module] | ||||
formatter = logging.Formatter('[%(levelname)s] %(asctime)s | %(pathname)s:\n%(message)s') | |||||
if not module: | |||||
module = "frappe" | |||||
handler = RotatingFileHandler(LOG_FILENAME, maxBytes=100_000, backupCount=20) | |||||
handler.setFormatter(formatter) | |||||
if site: | |||||
SITELOG_FOLDER = os.path.join(site, 'logs') | |||||
SITELOG_FILENAME = os.path.join(SITELOG_FOLDER, 'frappe.log') | |||||
logfile = module + '.log' | |||||
LOG_FILENAME = os.path.join('..', 'logs', logfile) | |||||
if not os.path.exists(SITELOG_FOLDER): | |||||
os.mkdir(SITELOG_FOLDER) | |||||
logger = logging.getLogger(module) | |||||
logger.setLevel(frappe.log_level or default_log_level) | |||||
logger.propagate = False | |||||
handler = RotatingFileHandler(SITELOG_FILENAME, maxBytes=100_000, backupCount=20) | |||||
handler.setFormatter(formatter) | |||||
formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(message)s') | |||||
handler = RotatingFileHandler(LOG_FILENAME, maxBytes=100_000, backupCount=20) | |||||
logger.addHandler(handler) | |||||
# | |||||
if site: | |||||
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: | if with_more_info: | ||||
handler.addFilter(SiteContextFilter()) | 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 | frappe.loggers[module] = logger | ||||
@@ -7,17 +7,24 @@ Events: | |||||
monthly | monthly | ||||
weekly | 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 | 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.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 | from frappe.utils.background_jobs import get_jobs | ||||
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S' | DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S' | ||||
def start_scheduler(): | def start_scheduler(): | ||||
@@ -48,9 +55,16 @@ def enqueue_events_for_all_sites(): | |||||
def enqueue_events_for_site(site): | def enqueue_events_for_site(site): | ||||
def log_and_raise(): | 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: | try: | ||||
frappe.init(site=site) | frappe.init(site=site) | ||||
@@ -60,10 +74,10 @@ def enqueue_events_for_site(site): | |||||
enqueue_events(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: | except frappe.db.OperationalError as e: | ||||
if frappe.db.is_access_denied(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: | else: | ||||
log_and_raise() | log_and_raise() | ||||
except: | except: | ||||