Flask使用uWSGI后logging模块功能失效

发布于 2022-08-29 19:46:45 字数 602 浏览 19 评论 0

症状:使用python直接运行时可以正常记入日志,使用Nginx+uWSGI部署后无日志生成。

背景介绍:

定义了一个initlogger函数对logger做了一些初始化工作。
该函数在myapi.py(flask主文件)中的name中进行启动初始化。

if __name__ == '__main__':
    initlogger()
    app.run(host='0.0.0.0', port=11120, debug=True)

发现没有生成日志后,想起应该在uWSGI的启动文件中进行初始化。
PS:uwsgi --socket 127.0.0.1:11121 -w WSGI:app
即在WSGI.py文件中的name中进行启动初始化。

from myapi import app
import myapi
if __name__ == "__main__":
    myapi.initlogger()
    app.run()

依然没有日志生成,不知道怎么处理。本人为python新手,请大家指导。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

肤浅与狂妄 2022-09-05 19:46:45

后面自己搞定了,不过具体原理还不是很理解,希望有了解的人可以补充一下,谢谢!

直接把logger初始化的语句放在主文件myapi.py中,而不是在if name == "main"中调用初始化。

from flask import Flask
import logging
from logging.handlers import TimedRotatingFileHandler

app = Flask(__name__)

formatter = logging.Formatter('%(name)-12s %(asctime)s level-%(levelname)-8s thread-%(thread)-8d %(message)s')   # 每行日志的前缀设置
log = logging.getLogger('api')
fileTimeHandler = TimedRotatingFileHandler(cf.LOG_API_PATH + 'api_', "S", 1, 10)
fileTimeHandler.suffix = "%Y%m%d.log"  #设置 切分后日志文件名的时间格式 默认 filename+"." + suffix 如果需要更改需要改logging 源码
fileTimeHandler.setFormatter(formatter)
logging.basicConfig(level = logging.INFO)
fileTimeHandler.setFormatter(formatter)
log.addHandler(fileTimeHandler)
情绪操控生活 2022-09-05 19:46:45

难道不是因为__name__!="__main__"吗.比如你这个在myapi.py,那__name__应该为"myapi"?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文