2011-01-27 47 views
6

我开始在Apache/mod_wsgi上运行的服务器上开发Django代码。在mod_wsgi上调试Django代码(如何访问['wsgi.errors'])

我看明白了一些事情:

  1. 通常被用来在 服务器上运行 调试应用程序有什么技巧?

  2. 具体来说,我正在尝试仅使用 “打印”调试。但我 似乎无法使打印语句 工作。我打印到stderr,但是 我不确定我应该看哪个日志文件 。根据 this,我应该使用 environ['wsgi.errors'],但我怎么做 我从我的Django代码访问?

谢谢!

编辑:顺便说一句,添加行print >> sys.stderr, 'message ...'不仅似乎不打印到任何日志文件,它会导致我的应用程序的一部分不加载。

+2

我想出了如何访问environ。简单地做到这一点:`request.META ['wsgi.errors']。write(“ello world”)`。 – 2011-01-27 08:51:36

+1

在显示时使用'print',被引导到stderr应该可以正常工作。它转到哪个Apache错误日志文件取决于您使用的是嵌入模式还是守护进程模式,以及您是否在VirtualHost内部使用ErrorLog指令。如果它没有出现在日志中,那么你对WSGI脚本文件中的sys.stdout/sys.stderr做了哪些调整(如果有的话)。 – 2011-01-27 08:53:24

回答

5
  1. 尝试使用django debug toolbar。当您无法真正使用调试器时,它可以帮助您进行大量调试。

    真的,应该在开发机器上进行调试。我还没有看到django在生产中的代码问题,这在我的开发框中也没有发生。

  2. 您通常无法在mod_wsgi中打印。改为使用logging模块。这真的是你想要的,调试工具栏会显示你在页面中的日志语句,所以你甚至不需要看文件。