我正在尝试从控制台中过滤掉某些终结点日志。我的settings.py
看起来像这样:
def skip_rss_requests(record):
if record.args and record.args[0].startswith('GET /api/feed/rss/'):
print("HEEERRRRREEEE")
return False
return True
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'skip_rss_requests': {
'()': 'django.utils.log.CallbackFilter',
'callback': skip_rss_requests
}
},
'formatters': {
'simple': {
'format': '[%(asctime)s] %(levelname)s|%(name)s|%(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S',
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'filters': ['skip_rss_requests'],
# 'stream': sys.stdout,
'formatter': 'simple'
},
但是,尽管满足条件,我仍会在控制台输出中看到这些日志:
[2020-04-28 13:31:11] INFO|django.request|GET /api/feed/rss/
[2020-04-28 13:31:13] INFO|django.request|GET /api/feed/rss/ - 200
HEEERRRRREEEE
关于为什么仍在记录这些记录的任何想法?
答案 0 :(得分:1)
更新:
我认为您想要的是在记录器部分中将自定义过滤器添加为django.request
的过滤器:
LOGGING = {
'loggers': {
'django.request':{
'filters': ['skip_rss_requests'],
'propagate': False, # stop it from propagating to parent
# ... and other settings
}
}
}
更新:对不起,我没有看清楚问题。
这些INFO|django.request
来自django.request
记录器。设置'disable_existing_loggers': False
时,您可以重新定义默认记录器,但是在记录器设置中,您没有覆盖djang.request
记录器,这就是为什么它仍使用默认{{1} }记录器。
参考:https://docs.djangoproject.com/en/3.0/topics/logging/#configuring-logging
您可以将DEBUG设置为False以禁用显示django.request
日志
根据Django文档
如果您根本不想配置日志记录(或者您想使用自己的方法手动配置日志记录),可以将LOGGING_CONFIG设置为None
INFO|django.request
参考:https://docs.djangoproject.com/en/3.0/topics/logging/#disabling-logging-configuration
答案 1 :(得分:0)
最后,这行得通:
def skip_rss_requests(record):
if hasattr(record, 'request') and hasattr(record.request, 'path') and '/rss/' in record.request.path:
return False
return True