我正在运行这个烧瓶应用程序来测试日志记录。它在我的本地系统上正常运行,但如果我使用mod_wsgi在apache服务器上运行它,它就不起作用。没有错误,但是,没有创建foo.log。
我正在使用python 3.5
代码如下所示:
from flask import Flask
import logging
from logging.handlers import RotatingFileHandler
app = Flask(__name__)
@app.route('/')
def foo():
app.logger.warning('A warning occurred (%d apples)', 42)
app.logger.error('An error occurred')
app.logger.info('Info')
return "foo"
if __name__ == '__main__':
handler = RotatingFileHandler('foo.log', maxBytes=10000, backupCount=1)
handler.setLevel(logging.INFO)
app.logger.addHandler(handler)
app.run(host='0.0.0.0')
wsgi文件如下所示:
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
from FlaskApp import app as application
application.secret_key = 'Add your secret key'
答案 0 :(得分:2)
使用Apache / mod_wsgi时,不要为Python logging
模块使用单独的日志文件。而是配置logging
模块以将消息输出到终端的流处理程序(stdout / stderr)。然后将在Apache错误日志中收集消息。使用Apache或系统机制然后旋转日志文件。
答案 1 :(得分:0)
当通过apache服务器运行时,脚本的pwd不一定与终端的密码相同。
或者:
foo.log
。或者:
foo.log
并找出apache决定放置它的位置:)答案 2 :(得分:0)
我遇到了同样的问题。我使用Apache的mod_wsgi运行Django应用程序。
首先,日志文件为'/tmp/debug.log',wsgi的日志文件中没有错误,但未创建文件“ /tmp/debug.log”。
然后,我将文件更改为'/var/log/httpd/debug.log',发现了如下错误:
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/var/log/httpd/debug.log'
最后,我创建一个新目录,并将所有者更改为apache,如下所示:
make /var/log/test
chown apache:apache /var/log/test
现在,创建了日志文件'/var/log/test/debug.log'。