Working with jars doesn't work at all

I am trying to write messages to Flask both in a file and in stdout. I read the Flask white papers and came up with the following:

from flask import Flask import logging from logging import Formatter, FileHandler app = Flask(__name__) @app.route('/') def hello_world(): app.logger.debug('second test message...') return 'Hello World!' if __name__ == '__main__': #Setup the logger file_handler = FileHandler('output.log') handler = logging.StreamHandler() file_handler.setLevel(logging.DEBUG) handler.setLevel(logging.DEBUG) file_handler.setFormatter(Formatter( '%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]' )) handler.setFormatter(Formatter( '%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]' )) app.logger.addHandler(handler) app.logger.addHandler(file_handler) app.logger.error('first test message...') app.run() 

There are several problems:

  • output.log file
  • Only the first registration message works:

    app.logger.error ('testing ...')

And only in stdout ... the one in the "/" view doesn't even print to stdout ... am I doing something wrong?

This is the result of starting the application and going to /:

 2015-03-08 11:33:27,183 ERROR: first test message... [in /home/mosquito/python_projects/flask_tst/flask_tst.py:31] * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 127.0.0.1 - - [08/Mar/2015 11:33:43] "GET / HTTP/1.1" 200 - 
+15
python flask logging
source share
3 answers

Your (debug) log messages are suppressed by Flask, since you are not working in debug mode. If you set this parameter to True, your code will work.

  app.run(debug=True) 

Messages will now appear as expected.

 BennyE$ python3 stackoverflow.py 2015-03-08 12:04:04,650 ERROR: firs test message... [in stackoverflow.py:31] * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) * Restarting with stat 2015-03-08 12:04:04,807 ERROR: firs test message... [in stackoverflow.py:31] -------------------------------------------------------------------------------- DEBUG in stackoverflow [stackoverflow.py:11]: second test message... -------------------------------------------------------------------------------- 2015-03-08 12:04:13,789 DEBUG: second test message... [in stackoverflow.py:11] 192.168.178.23 - - [08/Mar/2015 12:04:13] "GET / HTTP/1.1" 200 - -------------------------------------------------------------------------------- DEBUG in stackoverflow [stackoverflow.py:11]: second test message... -------------------------------------------------------------------------------- 2015-03-08 12:04:14,899 DEBUG: second test message... [in stackoverflow.py:11] 192.168.178.23 - - [08/Mar/2015 12:04:14] "GET / HTTP/1.1" 200 - 

This is the result in the corresponding output file:

 BennyE$ cat output.log 2015-03-08 11:58:22,226 ERROR: firs test message... [in stackoverflow.py:31] 2015-03-08 12:04:04,650 ERROR: firs test message... [in stackoverflow.py:31] 2015-03-08 12:04:04,807 ERROR: firs test message... [in stackoverflow.py:31] 2015-03-08 12:04:13,789 DEBUG: second test message... [in stackoverflow.py:11] 2015-03-08 12:04:14,899 DEBUG: second test message... [in stackoverflow.py:11] 
+19
source share

Thansk BennyE_HH, it works.

But the flag did not suppress the ERROR level log message, even the debug mode is disabled (disabled by default).

I think we should call app.logger.setLevel(logging.DEBUG) to control the log level, even the debug mode is false.

+4
source share

I had the same problem and the following worked for me:

 app.logger.setLevel(logging.INFO) 
0
source share

All Articles