【发布时间】:2014-10-26 22:31:30
【问题描述】:
我正在尝试将日志记录添加到使用 Flask 的 Web 应用程序中。
当使用内置服务器(即python3 server.py)托管时,日志记录有效。使用 Gunicorn 托管时,不会创建日志文件。
重现问题的最简单代码是这个:
#!/usr/bin/env python
import logging
from flask import Flask
flaskApp = Flask(__name__)
@flaskApp.route('/')
def index():
flaskApp.logger.info('Log message')
print('Direct output')
return 'Hello World\n'
if __name__ == "__main__":
logHandler = logging.FileHandler('/var/log/demo/app.log')
logHandler.setLevel(logging.INFO)
flaskApp.logger.addHandler(logHandler)
flaskApp.logger.setLevel(logging.INFO)
flaskApp.run()
应用程序被调用:
gunicorn server:flaskApp -b :80 -w 4
--access-gfile /var/log/demo/access.log
--error-logfile /var/log/demo/error.log
向网站主页发出请求时,会发生以下情况:
我收到了预期的 HTTP 200“Hello World\n”作为响应。
在
/var/log/demo/access.log中有请求的痕迹。/var/log/demo/error.log保持不变(只有启动事件)。终端中有“直接输出”行。
没有“/var/log/demo/app.log”。如果我在启动应用程序之前创建文件,则不会修改文件。
请注意:
目录
/var/log/demo可以被所有人访问(读、写、执行),所以这不是权限问题。如果我将
StreamHandler添加为第二个处理程序,终端和 Gunicorn 日志文件中仍然没有“日志消息”消息的痕迹。Gunicorn 是使用
pip3 install gunicorn安装的,因此不应与 Python 版本不匹配。
发生了什么事?
【问题讨论】:
标签: python logging flask gunicorn