使用wsgi进行日志记录不起作用,不会创建任何文件

时间:2017-08-14 10:57:07

标签: python logging mod-wsgi wsgi

我正在运行这个烧瓶应用程序来测试日志记录。它在我的本地系统上正常运行,但如果我使用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'

3 个答案:

答案 0 :(得分:2)

使用Apache / mod_wsgi时,不要为Python logging模块使用单独的日志文件。而是配置logging模块以将消息输出到终端的流处理程序(stdout / stderr)。然后将在Apache错误日志中收集消息。使用Apache或系统机制然后旋转日志文件。

答案 1 :(得分:0)

当通过apache服务器运行时,脚本的pwd不一定与终端的密码相同。

或者:

  1. 使用完整路径代替foo.log
  2. 或者:

    1. 在您的系统中搜索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'。