diff --git a/openedx/core/djangoapps/util/log_utils.py b/openedx/core/djangoapps/util/log_utils.py index 2ee2e6af8e9997a95b3d63b48c066152ae8c2911..9406eb6db9bd59b51c1b30acfa88478b62b5a05c 100644 --- a/openedx/core/djangoapps/util/log_utils.py +++ b/openedx/core/djangoapps/util/log_utils.py @@ -2,11 +2,14 @@ Django-based logging utilities UserIdFilter: A logging.Filter that adds userid to the logging context + +RemoteIpFilter: A logging filter that adds the remote IP to the logging context """ from logging import Filter +from crum import get_current_request from crum import get_current_user @@ -18,3 +21,14 @@ class UserIdFilter(Filter): else: record.userid = None return True + + +class RemoteIpFilter(Filter): + def filter(self, record): + # get IP from context + request = get_current_request() + if request and 'REMOTE_ADDR' in request.META: + record.remoteip = request.META['REMOTE_ADDR'] + else: + record.remoteip = None + return True diff --git a/openedx/core/lib/logsettings.py b/openedx/core/lib/logsettings.py index 0d3a5913265c06bad1cad8bfac4871b3b7da5d44..bb29924ab4cb3eefcb9f8e5b45cf1159ed4553ae 100644 --- a/openedx/core/lib/logsettings.py +++ b/openedx/core/lib/logsettings.py @@ -30,7 +30,7 @@ def get_logger_config(log_dir, hostname = platform.node().split(".")[0] syslog_format = (u"[service_variant={service_variant}]" u"[%(name)s][env:{logging_env}] %(levelname)s " - u"[{hostname} %(process)d] [user %(userid)s] [%(filename)s:%(lineno)d] " + u"[{hostname} %(process)d] [user %(userid)s] [ip %(remoteip)s] [%(filename)s:%(lineno)d] " u"- %(message)s").format(service_variant=service_variant, logging_env=logging_env, hostname=hostname) @@ -41,7 +41,7 @@ def get_logger_config(log_dir, 'formatters': { 'standard': { 'format': u'%(asctime)s %(levelname)s %(process)d ' - u'[%(name)s] [user %(userid)s] %(filename)s:%(lineno)d - %(message)s', + u'[%(name)s] [user %(userid)s] [ip %(remoteip)s] %(filename)s:%(lineno)d - %(message)s', }, 'syslog_format': {'format': syslog_format}, 'raw': {'format': '%(message)s'}, @@ -52,6 +52,9 @@ def get_logger_config(log_dir, }, 'userid_context': { '()': 'openedx.core.djangoapps.util.log_utils.UserIdFilter', + }, + 'remoteip_context': { + '()': 'openedx.core.djangoapps.util.log_utils.RemoteIpFilter', } }, 'handlers': { @@ -59,7 +62,7 @@ def get_logger_config(log_dir, 'level': 'INFO', 'class': 'logging.StreamHandler', 'formatter': 'standard', - 'filters': ['userid_context'], + 'filters': ['userid_context', 'remoteip_context'], 'stream': sys.stderr, }, 'mail_admins': { @@ -72,7 +75,7 @@ def get_logger_config(log_dir, 'class': 'logging.handlers.SysLogHandler', 'address': '/dev/log', 'formatter': 'syslog_format', - 'filters': ['userid_context'], + 'filters': ['userid_context', 'remoteip_context'], 'facility': SysLogHandler.LOG_LOCAL0, }, 'tracking': {