Przeglądaj źródła

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

module
version-14
Gavin D'souza 5 lat temu
rodzic
commit
c39a52d764
5 zmienionych plików z 45 dodań i 29 usunięć
  1. +1
    -1
      frappe/__init__.py
  2. +1
    -1
      frappe/core/doctype/scheduled_job_type/scheduled_job_type.py
  3. +1
    -1
      frappe/utils/error.py
  4. +18
    -16
      frappe/utils/logger.py
  5. +24
    -10
      frappe/utils/scheduler.py

+ 1
- 1
frappe/__init__.py Wyświetl plik

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


+ 1
- 1
frappe/core/doctype/scheduled_job_type/scheduled_job_type.py Wyświetl plik

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


+ 1
- 1
frappe/utils/error.py Wyświetl plik

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


+ 18
- 16
frappe/utils/logger.py Wyświetl plik

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




+ 24
- 10
frappe/utils/scheduler.py Wyświetl plik

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


Ładowanie…
Anuluj
Zapisz