使用Apache运行Flask时打印的位置在哪里?

时间:2015-07-22 09:38:41

标签: python apache logging flask

我刚刚将我使用Flask构建的第一个网站部署到生产服务器。我使用logging.handlers.RotatingFileHandler启用了/log/myapp.log的日志记录,我可以使用它来记录消息,例如:

current_app.logger.error('this is a massive error')

这很好用。它让我对一些代码片段感到疑惑,其中包含我在调试时使用的print 'some info here'。这些打印输出在哪里?进入虚空/dev/null或其他地方?有可能以某种方式抓住他们吗?

欢迎所有提示!

2 个答案:

答案 0 :(得分:5)

使用print输出的所有内容都转到标准输出,即Unix服务器上的/dev/stdout(默认情况下)。由于apache作为服务运行,您可能永远不会看到这些输出。

解决此问题的一种方法是将脚本的标准输出重定向到某些文件:

>>> import sys
>>> sys.stdout = open('output.logs', 'w')
>>> print('Hello World!') # Nothing appears bellow
>>> sys.stdout = sys.__stdout__ # Reset to the standard output
>>> open('output.logs', 'r').read()
'Hello World!\n'

答案 1 :(得分:2)

在Apache上运行的应用程序中的打印语句通常可以在Apache日志中看到。您可以查看此文件:/var/log/apache2/other_vhosts_access.log