fix: Add Form Dict information only for frappe.log

This commit is contained in:
Gavin D'souza 2020-05-27 19:09:18 +05:30
parent c39a52d764
commit 746b540af8
4 changed files with 19 additions and 24 deletions

View file

@ -1559,7 +1559,7 @@ def get_doctype_app(doctype):
loggers = {}
log_level = None
def logger(module=None, with_more_info=True):
def logger(module=None, with_more_info=False):
'''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)

View file

@ -96,6 +96,16 @@ def application(request):
frappe.monitor.stop(response)
frappe.recorder.dump()
frappe.logger("web").info({
"site": get_site_name(request.host),
"remote_addr": request.remote_addr,
"base_url": request.base_url,
"full_path": request.full_path,
"method": request.method,
"scheme": request.scheme,
"http_status_code": response.status_code
})
frappe.destroy()
return response
@ -186,7 +196,6 @@ def handle_exception(e):
frappe.local.login_manager.clear_cookies()
if http_status_code >= 500:
frappe.logger().error('Request Error', exc_info=True)
make_error_snapshot(e)
if return_as_message:

View file

@ -21,7 +21,7 @@ def make_error_snapshot(exception):
if frappe.conf.disable_error_snapshot:
return
logger = frappe.logger(with_more_info=False)
logger = frappe.logger(with_more_info=True)
try:
error_id = '{timestamp:s}-{ip:s}-{hash:s}'.format(

View file

@ -15,17 +15,19 @@ import frappe
default_log_level = logging.DEBUG
site = getattr(frappe.local, 'site', None)
form_dict = getattr(frappe.local, 'form_dict', None)
def get_logger(module, with_more_info=True):
def get_logger(module, with_more_info=False):
global site
if module in frappe.loggers:
return frappe.loggers[module]
if not module:
module = "frappe"
with_more_info = True
logfile = module + '.log'
site = getattr(frappe.local, 'site', None)
LOG_FILENAME = os.path.join('..', 'logs', logfile)
logger = logging.getLogger(module)
@ -54,25 +56,9 @@ def get_logger(module, with_more_info=True):
class SiteContextFilter(logging.Filter):
"""This is a filter which injects request information (if available) into the log."""
def filter(self, record):
record.msg = get_more_info_for_log() + text_type(record.msg)
return True
def get_more_info_for_log():
'''Adds Site, Form Dict into log entry'''
more_info = []
if site:
more_info.append('Site: {0}'.format(site))
form_dict = getattr(frappe.local, 'form_dict', None)
if form_dict:
more_info.append('Form Dict: {0}'.format(frappe.as_json(form_dict)))
if more_info:
# to append a \n
more_info = more_info + ['']
return '\n'.join(more_info)
if "Form Dict" not in text_type(record.msg):
record.msg = text_type(record.msg) + "\nSite: {0}\nForm Dict: {1}".format(site, getattr(frappe.local, 'form_dict', None))
return True
def set_log_level(level):
'''Use this method to set log level to something other than the default DEBUG'''