使用wsgi无法记录日志,不会创建文件

2024-03-29 05:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行这个flask应用程序来测试日志记录。它在我的本地系统上运行得很好,但是如果我在apache服务器上使用mod_wsgi运行它,它就不能工作了。没有错误,但是,没有食品日志已创建。在

我使用的是python3.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文件如下所示:

^{pr2}$

Tags: namefromimportappflaskwsgifoologging
3条回答

我也遇到过同样的问题。我使用Apache的mod wsgi运行Django应用程序。在

首先,日志文件是'/tmp/调试日志,wsgi的日志文件中没有错误,只有“/tmp”文件/调试日志“未创建。在

然后,我将文件更改为'/var/log/httpd/调试日志'时,我发现了如下错误:

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/var/log/httpd/debug.log'

最后,我创建一个新目录,并将所有者更改为apache,如下所示:

^{pr2}$

现在,logfile'/var/log/test/调试日志'已创建。在

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

或者:

  1. 使用完整路径而不是foo.log。在

或者:

  1. 在您的系统中搜索foo.log,并找出apache决定将它放在哪里:)

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

相关问题 更多 >