I using standard Python logging module with Flask framework. I want to have one log file with the all records of users actions with custom parameter - %(username)s to logging.Formatter:
admin - 2013-10-11 15:11:47,033 action0
user1 - 2013-10-11 15:11:48,033 action1
user2 - 2013-10-11 15:11:49,033 action2
admin - 2013-10-11 15:11:50,033 action3
I'm using RotatingFileHandler:
def get_user_name():
return session.get("username", "")
file_handler = RotatingFileHandler(fname, maxBytes=1 * 1024 * 1024, backupCount=5)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter(
'%(username)s - %(asctime)s %(levelname)-10s %(message)s [in %(pathname)s:%(lineno)d]'
)) # how to insert get_user_name() instead %(username)s?
app.logger.addHandler(file_handler)
What is the right way to do such logger? Thanks.
Isn't the easier way to just subclass a Formatter and add your custom attribute to the LogRecord just before formatting?
For instance I use this code:
I don't consider myself a Python expert, but it works for me....
u can do it with logging.LoggerAdapter
Here is the complete solution for your program. I use a dict to build my configuration. It is better, if you have more logger