Added remote IP to logging (#24932)
* Add remote IP to logging config Add a new filter to get the remote IP for the current request and include it in log statements SEG-34 * Added line for formatting Added line for formatting SEG-34
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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': {
|
||||
|
||||
Reference in New Issue
Block a user