django - Django将runserver日志打印到文件
问题描述
我正在使用 supervisord 的容器内运行 django 应用程序。
但有时我需要查看日志来修复一些错误,但我找不到解决方法。
我试图添加一个stdout_logfile
但stderr_logfile
总是错误日志文件是空的
这是我的supervisor.conf
[supervisord]
loglevel=info
logfile=/tmp/supervisord.log
[program:myapp]
command = python3 -u /usr/src/app/manage.py runserver 0.0.0.0:8000
stdout_logfile=/usr/src/app/out.log
stderr_logfile=/usr/src/app/err.log
并且总是相同的结果,out.log
文件将包含异常发生之前的行并且err.log
不会被创建
这是我运行 docker compose 时得到的输出
2020-05-13 17:33:44,140 INFO supervisord started with pid 1
2020-05-13 17:33:45,144 INFO spawned: 'myapp' with pid 9
2020-05-13 17:33:46,201 INFO success: myapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
解决方案
经过一番挣扎后,我发现日志正在被缓冲,因此解决方案是添加environment = PYTHONUNBUFFERED=1
到supervisor.conf
文件中
修改后的我的conf文件
[supervisord]
loglevel=info
logfile=/tmp/supervisord.log
[program:myapp]
command = python3 -u /usr/src/app/manage.py runserver 0.0.0.0:8000
environment = PYTHONUNBUFFERED=1
stdout_logfile=/usr/src/app/out.log
stderr_logfile=/usr/src/app/err.log
推荐阅读
- go - Fprint/Fprintf 与 conn.Write 的区别
- python - Getting error message trying to use defined functions for simple equation
- reactjs - 如何找到 React 警告所指的特定组件?
- android - 在 Mac 上的 android 模拟器上运行的 Expo
- laravel - 带有 GraphQl 分页的 Vue.js
- vba - 如何在 Outlook 中保存已发送的邮件
- javascript - 在商店 Woocommerce 中的产品下显示类别 - 继续显示“数组”
- vb.net - vb.net 中是否有使用 winforms 调用的事件列表框已完成加载
- hibernate - Lucene BigDecimal 范围查询
- javascript - 从数组 JavaScript 求和