我在Elastic Beanstalk上安装了一个应用,使用Django(有一个自动伸缩的负载均衡器)。配置中还使用了apache httpd和mod_wsgi。
应用程序功能正常,但我偶尔会看到一个错误,但我无法调试。这是由于错误本身没有出现在error_log中。
访问日志中的一个样本,(IP地址省略)。
[15/Apr/2020:01:13:21 +0000] "GET /reroute/agument/ HTTP/1.1" 500 27 "-" ""
[15/Apr/2020:01:13:22 +0000] "GET /reroute/argument/ HTTP/1.1" 302 - "https://www.bing.com/" "Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36"
最上面的请求是错误请求,最下面的是典型请求 我注意到这里主要是500请求中没有用户代理。梳理access_log,每一个这种类型的请求都没有用户代理。我没有设置专门的功能来阻止僵尸蜘蛛之类的。
这些500错误是随机发生的,在过去的几个月里一直如此。没有任何关于最终用户发生这些错误的报告,这让我相信有两种可能。
我真的很想识别并阻止这些错误的请求,因为它影响了应用程序本身的错误报告。确定这里的问题的最佳方法是什么?
我在豆茎环境中添加的唯一功能(通过.ebextensions)是。
OK,所以我很笨。
这些错误信息没有出现在我的日志中的原因只是因为它们没有办法在日志中显示。
在Django中设置一个简单的日志字典 settings.py
突然开始显示500个错误发生时的堆栈痕迹。从那里,我可以看出这是一个简单的未处理的异常。
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"console": {
"class": "logging.StreamHandler",
},
},
"loggers": {
"django": {"handlers": ["console"], "level": "INFO"},
},
}