You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Docker容器内Django应用的运行日志以排查代码错误?

Docker部署Django无报错日志的排查解决方法

1. 优先查看Docker原生容器日志

Docker默认会捕获容器内进程的标准输出(stdout)和标准错误(stderr),可以直接通过命令读取:

  • 先列出所有容器(包含已停止的失败容器)获取容器ID/名称:docker ps -a
  • 查看对应容器的历史日志:docker logs <容器ID/容器名称>
  • 如需实时监听新产生的日志,可添加-f参数:docker logs -f <容器ID/容器名称>
  • 如果你用docker-compose部署,可直接用docker-compose logs <服务名>查看对应服务日志,加-f同样支持实时监听。

2. 调整配置保证日志输出到控制台

如果docker logs无内容,大概率是Django或应用服务器的日志默认输出到了本地文件,没有输出到标准输出,可按以下方式调整:

  • 调试阶段可先开启Django的DEBUG模式:在settings.py中设置DEBUG = True,会输出更完整的错误信息(生产环境务必关闭)
  • 如使用Gunicorn作为应用服务器,启动命令添加日志输出参数,强制输出到控制台:
    gunicorn --access-logfile - --error-logfile - 项目名.wsgi:application
    其中-代表输出到标准输出,可被Docker直接捕获
  • 如使用uWSGI作为应用服务器,在配置中添加logto = /dev/stdout,或启动时添加参数--logto /dev/stdout
  • 也可以直接在Django的settings.py中配置全局日志规则,强制所有日志输出到控制台:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO',
    },
}

3. 进入容器手动运行排查

如果以上方法还是无法拿到报错,可直接进入容器手动执行启动命令,直接查看终端输出:

  • 若容器还在运行:docker exec -it <容器ID/容器名称> /bin/bash
  • 若容器已经停止运行:docker run -it --entrypoint /bin/bash <你的镜像名>
    进入容器后手动执行原启动命令(比如python manage.py runserver 0.0.0.0:8000或对应的应用服务器启动命令),就能直接看到ModuleNotFoundError这类实时报错信息。

注意事项

容器部署场景下不要把日志写入容器内的本地文件,Docker默认不会采集本地文件内容,所有日志都尽量输出到标准输出/标准错误流。

内容的提问来源于stack exchange,提问作者A.Ktns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:54:01