feat: seperate loggers into frappe, web, scheduler categories and not by

module
This commit is contained in:
Gavin D'souza 2020-05-27 18:33:03 +05:30
parent 5d83e94b09
commit c39a52d764
5 changed files with 45 additions and 29 deletions

View file

@ -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'''

View file

@ -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):

View file

@ -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(

View file

@ -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

View file

@ -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: