Suppose I have the following
from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':
If I run
python foo.py I get this output and everything is fine:
* Running on http://127.0.0.1:5000/
* Restarting with reloader
Now if I un-comment the
import salt line and run
python foo.py I get nothing in the terminal, although I can confirm with curl that my web app is indeed running. Is there any conflict between Salt Stack API and Flask, or have I perhaps discovered a bug?
I'm using Flask 0.10.1 and Salt 2014.7.0 with Python 2.7.6 inside a virtualenv.
EDIT: I found out what this is about, though I'm still not sure what the solution is. Salt calls
logging.setLoggerClass(SaltLoggingClass) as part of its initialization and so
SaltLoggingClass is used from then on as our logging class, even in other modules.
Okay I found out what is going on here and I also found a workaround. As I said on my last edit, this is Salt's doing as already reported here. The workaround is to initialize logging yourself before importing Salt. Something like this:
import sys import logging logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format="%(message)s") # Now we can import salt. import salt
I don't think this is the best decision on Salt's part, but we have to do with what we got!