I save the logs to the file with this configuration. But I could not log the client ip address.
I also want to keep logs for 1 day.
Is there a simple method for this? Does anyone have an idea about this?
django-requestlogging
I tried this library but failed. I do not know if it is up to date. Thanks
LOGGING ={ 'version':1, 'loggers':{ 'django':{ 'handlers':['file','file2'], 'level':'DEBUG' } }, 'handlers':{ 'file':{ 'level':'INFO', 'class': 'logging.FileHandler', 'filename':'./logs/info.log', 'formatter':'simpleRe', }, 'file2':{ 'level':'DEBUG', 'class': 'logging.FileHandler', 'filename':'./logs/debug6.log', 'formatter':'simpleRe', } }, 'formatters':{ 'simpleRe': { 'format': ' {asctime} {levelname} {message} ', 'style': '{', } } }
You could use 2 options:
import logging
def foo(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
some_logger = logging.getLogger(__name__)
some_logger.warning('Your log message... IP:' + ip)
import logging
class IPAddressFilter(logging.Filter):
def filter(self, record):
if hasattr(record, 'request'):
x_forwarded_for = record.request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
record.ip = x_forwarded_for.split(',')[0]
else:
record.ip = record.request.META.get('REMOTE_ADDR')
return True
LOGGING = {
"version": 1,
"formatters": {
"request_formatter": {
"format": "%(asctime)s - %(name)s - %(ip)s - %(levelname)s - %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
},
},
"handlers": {
"request": {
"level": "WARNING",
"class": "logging.handlers.RotatingFileHandler",
"formatter": "request_formatter",
"filename": "requests.txt",
"maxBytes": 1024000,
"backupCount": 3
}
},
'filters': {
'add_ip_address': {
'()': 'settings.IPAddressFilter' # You can move IPAddressFilter class from settings.py to another location (e.g., apps.other.filters.IPAddressFilter)
}
},
"loggers": {
'django.request': {
"level": "WARNING",
'filters': ['add_ip_address'],
"handlers": ["request"]
},
},
"disable_existing_loggers": False
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With