-
-
Save ibeex/3257877 to your computer and use it in GitHub Desktop.
A warning occurred (42 apples) | |
An error occurred |
import logging | |
from logging.handlers import RotatingFileHandler | |
from flask import Flask | |
app = Flask(__name__) | |
@app.route('/') | |
def foo(): | |
app.logger.warning('A warning occurred (%d apples)', 42) | |
app.logger.error('An error occurred') | |
app.logger.info('Info') | |
return "foo" | |
if __name__ == '__main__': | |
handler = RotatingFileHandler('foo.log', maxBytes=10000, backupCount=1) | |
handler.setLevel(logging.INFO) | |
app.logger.addHandler(handler) | |
app.run() |
From the example in the beginning try this -
handler = RotatingFileHandler('foo.log', maxBytes=10000, backupCount=1)
great! thanks for this nice little snippet that works
How do i pass it to the next file ??
say i have another file bar.py
and it has a method
def bar_method():
print "in bar"
bar_method is called by foo.
I want to use same logging style here. how to do that?
Great!! :)
You have to set the handler to a level lower than the logger record or else it will not emit the message
Thanks
THX
thanks
info log cannot be record, we should set
app.logger.setLevel(logging.INFO)
Thanks.
i finally could not use print ~~
hello everyone
Please is it possible to put this in a function where you can pass the log file to when called
like so
def logga(log_file): handler = TimedRotatingFileHandler('logs/%s.log' % log_file, when='midnight', interval=1) handler.setLevel(logging.DEBUG) formatter = logging.Formatter( "[%(asctime)s] {%(pathname)s:%(lineno)d} | %(funcName)s | %(levelname)s - %(message)s") handler.setFormatter(formatter) loga = logging.getLogger('werkzeug') loga.setLevel(logging.DEBUG) loga.addHandler(handler) app.logger.addHandler(handler)
The above does not currently work . ..
thanks in advance
Great and to the point, just what I needed. Thank you!
you can try this its very easy : https://github.com/ranvijay-sachan/flask-core-python-logging
This gist seems to print 4 lines for every call to log, e.g.
--------------------------------------------------------------------------------
INFO in app [/usr/src/app/app.py:187]:
successful query
--------------------------------------------------------------------------------
How do you get it to print on just one line? http://stackoverflow.com/questions/41783774/how-to-log-in-flask
Hi All,
I am using logging in various python apps, your post logging for flask speciically was helpful, however is there a web based log viewer, that I can just login and view logs if any generated by my app ?
Thanks a lot
Thanks.
Thinks
Very useful, thank you! Some other logging handlers are here: https://docs.python.org/2/library/logging.handlers.html
Very helpful, thank you!
Thank you for this gist. In addition if you only want to log to stdout do the following:
import sys
import logging
import flask
app = flask.Flask(__name__)
@app.before_first_request
def setup_logging():
if not app.debug:
# In production mode, add log handler to sys.stdout.
app.logger.addHandler(logging.StreamHandler(stream=sys.stdout))
app.logger.setLevel(logging.INFO)
This is necessary, because Flask does not log messages in production mode by default. To get Flask's app.logger to log messages, you'll always have to add a logging handler, even for simply logging to stdout.
see
It is not the case (at least anymore) that you'll always have to explicitly add a logging handler to get Flask's app.logger to log messages. According to http://flask.pocoo.org/docs/1.0/logging/, we can simply make a logging.basicConfig(...)
call before creating the Flask app, like
import flask
import logging
logging.basicConfig(filename=LOG_FILENAME, format=LOG_FORMAT, level=LOG_LEVEL)
app = Flask(__name__)
This worked for me in a production environment on all log levels.
thanks much
I was using TimedRotatingFileHandler in my Flask app under Gunicorn with multiple workers. I ended up seeing logs from same time being written into different files (i.e one of the workers seem to be writing to a rotated file). Was trying to look thorough if thats the case with others and I see this Blog post:
I'm not sure if the issue is with me unable to get it working or this happens really
Thanks!It really helps me!
Thanks a lot!
is there a way to log errors (ex: timeout connection DB) inside gunicorn logs? Or how should I log errors in a flask app running in production with Gunicorn?
When I follow above example:
handler = RotatingFileHandler(maxBytes=10000, backupCount=1)
handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler)
I got below error:
Traceback (most recent call last):
File "main.py", line 33, in
handler = RotatingFileHandler(maxBytes=10000, backupCount=1)
TypeError: init() takes at least 2 arguments (3 given)
Can you help me to explain about this? thank you very much.