Flask-Web-Log

Enables web traffic and request logs for your Flask app.


License
Apache-2.0
Install
pip install Flask-Web-Log==0.1

Documentation

Flask-Web-Log

Flask-Web-Log enables request logging for your flask app. It has support for multiple

Features

The following useful request data is logged (full explanations are in the Flask docs):

  • time: Date and Time in ISO 8601 format
  • src_ip: Source IP, has support for 'X-Forwarded-For'
  • useragent: Client UserAgent
  • connection: Connection Type e.g. keep-alive, close
  • http_method: HTTP method e.g. GET, POST OPTIONS
  • request_scheme: URL scheme (http or https).
  • http_status: HTTP status code e.g. 200, 301, 404
  • dest_ip: Destination host IP
  • dest_port: Destination host port
  • url: URL requested
  • url_path: URL path requested
  • content_type: indicates the media type of the entity-body
  • mimetype: similar to content type but without parameters e.g. if the content type is text/HTML; charset=utf-8 the mimetype would be 'text/html'.
  • url_query: raw URL query string
  • cookies: A dictionary with the contents of all cookies transmitted with the request.
  • data: Contains the incoming request data as string in case it came with a mimetype Werkzeug does not handle.
  • content_md5: MD5 digest of the entity-body for the purpose of providing an end-to-end message integrity check (MIC) of the entity-body.
  • referrer: URL referrer
  • authorisation: HTTP basic/digest authorization header
  • duration - Request duration from the time the request was received to the time the request was replied to
  • request_id: Correlates HTTP requests between the client and server.
  • user(remote_user): If the server supports user authentication, and the script is protected, this attribute contains the username the user has authenticated as.

Flask-Web-Log can log requests to the following formats:

  • CSV
  • JSON
  • SQLITE DB
  • STDOUT

Installation

You can install Flask-Web-Log using pip:

pip install flask_web_log

or directly from source:

git clone git@github.com:nethunters/flask-web-log.git
cd flask-web-log
python setup.py install

Quickstart

Import flask_web_log and initialise.

from flask_web_log import Log
Log(app)

Example App

from flask import Flask, request, Response
from flask_web_log import Log

app = Flask(__name__)
app.config["LOG_TYPE"] = "CSV"
Log(app)


@app.route('/', methods=["GET", "POST"])
def hello():
    return "lets test this log!"


if __name__ == '__main__':
    app.run(debug=True)

Configuration

The following configuration values are used by Flask-Web-Log:

Config Value Description
LOG_TYPE Format to log out to. Currently supported log formats are: CSV, JSON, STDOUT and SQLITE DB. Defaults to CSV.
LOG_FILENAME The filename, without the file extension, for the log. Defaults to flask-web-log.
LOG_LOCATION The directory to log to. Defaults to the current directory.

License

Flask-Web-Log is licensed under the Apache2.0 license. See License.