为什么在前面使用UWSGI时Flask logger不登录docker?

2024-06-01 14:38:54 发布

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

我在Docker中有一个Flask应用程序,它在前面没有UWSGI的情况下运行时正在登录docker logs。现在我已经使用UWSGI和下面的配置在Docker中运行我的应用程序:

[uwsgi]

master = true

processes = 5
threads = 2

socket = 127.0.0.1:3031
chmod-socket = 664
stats=0.0.0.0:30310

chdir = /etc/fantas

uid = root
gid = root

wsgi-file=uwsgi_fantas.py
callable=app

vacuum = true

uwsgi_fantas.py文件包含:

from fantas.fantas_app import FantasApp

app = FantasApp().setup()

setup方法返回app

from flask_restful import Api
from fantas import app

class FantasApp(object):
    def setup(self):
        api = Api(app)
        api.add_resource(Token, '/users')

        return app

最后,启动Flask框架的部分位于项目根目录中的__init__.py中:

from flask import Flask
import logging

app = Flask(__name__)

s_handler = logging.StreamHandler()
s_handler.setLevel(logging.DEBUG)
app.logger.addHandler(s_handler)

由于UWSGI直接与app对象一起工作,我在__init__.py中配置了logger,但问题是它在运行时不会将任何内容登录到Docker中,它只是记录UWSGI请求。

app.logger配置过程中有什么问题?

问题已经解决,但现在日志被复制了!


编辑-1: 我设置了app.logger.setLevel(logging.DEBUG),似乎Flask成功地登录到Docker。奇怪的是它记录了3次!我删除了所有记录器配置和处理程序,只使用了:

app.logger.setLevel(logging.DEBUG)

但现在它记录了两次:

proj_fantas.1.huagnqqpzo1n@linuxkit-025000000001    | [2018-07-13 07:02:38,008] DEBUG in token: [Token] authenticating user...
proj_fantas.1.huagnqqpzo1n@linuxkit-025000000001    | DEBUG:flask.app:[Token] authenticating user...

为什么会这样?


编辑-2:

app.logger.handlers的输出是[<logging.StreamHandler object at 0x7f0f430ca8d0>]。它只显示了我先前初始化的StreamHandler,没有更多。


编辑-3:

ps -ef命令在Docker内的输出:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        10     1  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        12     1  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        13     1  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        15     1  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        16     1  0 15:26 ?        00:00:00 uwsgi uwsgi_coconuty.ini
root        20     0  0 15:27 pts/0    00:00:00 /bin/bash
root       112    20  0 15:28 pts/0    00:00:00 ps -ef

没有其他进程在Docker内运行。


Tags: dockerfrompydebugimportappflasklogging