Django设置Debug=False时出现500错误,无控制台输出问题排查
搞定Django Debug=False时的500错误日志问题
我之前也碰到过这个情况——Debug切到False后,哪怕用manage.py runserver跑,控制台啥错误信息都没有,排查起来特别费劲。结合经验,给你几个实用的方法来拿到详细错误日志:
1. 先找默认生成的日志文件
Django在Debug=False模式下,默认会把错误日志写到项目根目录的django.log文件里。你直接打开这个文件看看,大概率能找到500错误的详细堆栈信息。
2. 自定义日志配置,让错误输出到控制台+文件
如果默认日志没找到,或者你想直接在控制台看到错误,建议在settings.py里加一段日志配置。这样不管是用manage.py还是gunicorn运行,都能精准捕获错误:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { # 把错误写到文件 'error_file': { 'level': 'ERROR', 'class': 'logging.FileHandler', 'filename': './logs/django_errors.log', # 可以改成你喜欢的路径,记得先建logs文件夹 }, # 同时在控制台输出错误 'console': { 'level': 'ERROR', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django': { 'handlers': ['error_file', 'console'], 'level': 'ERROR', 'propagate': True, }, }, }
配置完之后,重启manage.py runserver,再触发500错误,控制台就会打印详细错误了,同时文件里也会备份一份。
3. 针对gunicorn的日志排查
你提到用gunicorn也会500,启动gunicorn的时候可以直接指定错误日志文件,这样能单独捕获gunicorn层面的错误:
gunicorn itapp.wsgi:application --error-logfile ./logs/gunicorn_errors.log
打开这个日志文件,里面可能会有Django没捕获到的服务器层面错误。
额外提醒
Debug=False时,还有个常见坑是静态文件配置问题——如果没正确设置STATIC_ROOT或者没跑python manage.py collectstatic,也可能触发500错误。你可以先确认这块配置没问题,排除这个干扰项。
内容的提问来源于stack exchange,提问作者AlexW
相关产品推荐
相关产品推荐

