Source code for flask_container_scaffold.logging
import logging
from flask import has_request_context
from flask_container_scaffold.network import get_remote_addr_from_flask
[docs]
class FlaskRequestFormatter(logging.Formatter):
"""
A Formatter logging class to add IP information to the log records.
Usage example::
from flask_container_scaffold.logging import FlaskRequestFormatter
dictConfig({
'version': 1,
'formatters': {
'default': {
'()': FlaskRequestFormatter,
'format': '[%(asctime)s] %(remote_addr)s %(levelname)s: %(message)s',
},
},
...
})
"""
[docs]
def format(self, record):
# If the record already has remote_addr, don't override it
if hasattr(record, 'remote_addr') and record.remote_addr is not None:
return super().format(record)
if has_request_context():
remote_addr = get_remote_addr_from_flask()
record.remote_addr = remote_addr
else:
record.remote_addr = "-"
return super().format(record)