I have a Flask
application inside of Docker
that was logging into docker logs
when it was running without UWSGI
in front. Now I have used UWSGI
with the config below to run my application inside of 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
The uwsgi_fantas.py
file contains:
from fantas.fantas_app import FantasApp
app = FantasApp().setup()
The setup
method returns 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
Finally the part that initiates the Flask
framework is inside of __init__.py
in the root directory of project:
from flask import Flask
import logging
app = Flask(__name__)
s_handler = logging.StreamHandler()
s_handler.setLevel(logging.DEBUG)
app.logger.addHandler(s_handler)
As UWSGI
works directly with the app
object I have configured logger inside of __init__.py
, but the problem is that it does not log anything into Docker
when it is run, it just logs UWSGI
requests.
What is wrong in the process of app.logger configuration?
Problem has been solved, but now logs get duplicated!
EDIT-1:
I set app.logger.setLevel(logging.DEBUG)
and it seems that Flask
logs into Docker
successfully. The weird part is that it logs 3 times! I removed all logger configs and handlers and just used:
app.logger.setLevel(logging.DEBUG)
But now it logs 2 times:
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...
Why it is like that?
EDIT-2:
The output of app.logger.handlers
is [<logging.StreamHandler object at 0x7f0f430ca8d0>]
. It just shows the StreamHandler that I initialized earlier, nothing more.
EDIT-3:
The output of ps -ef
command inside of 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
There is no other process running inside of Docker
.