Reusable /logs route + logging manager for Flask and FastAPI apps
Project description
LogSpot
LogSpot is a lightweight, reusable Flask extension that adds a /logs route to your application, allowing you to view, filter, search, and download logs directly from the browser. It also provides a simple logging interface attached to your Flask app instance.
Features
- Instant Log Viewer: Access your application logs at
/logs. - Filtering: Filter logs by severity level (INFO, DEBUG, WARN, ERROR, CRITICAL).
- Search: Search for specific keywords in your logs.
- Pagination/Limit: Control the number of log lines displayed.
- Download: Download logs as a file for offline analysis.
- Simple API: Easy-to-use logging methods attached directly to your Flask
appobject. - Alerts: Send Telegram alerts for critical errors.
Installation
You can install LogSpot using pip:
pip install logspot
Or install directly from the source:
pip install git+https://github.com/rishabhpandey106/logspot.git
Quick Start
Here's how to integrate LogSpot into your Flask application:
from flask import Flask
from logspot import setup_logs
app = Flask(__name__)
# Initialize LogSpot
# This registers the /logs blueprint and attaches logging methods to 'app'
logger = setup_logs(app, service="resbot",telegram_chat_id=TELEGRAM_CHAT_ID)
@app.route("/")
def index():
# Use the attached logging methods
logger.info("Index page accessed")
return "Hello, World!"
@app.route("/error")
def trigger_error():
logger.error("Something went wrong!", notify=True)
return "Error logged", 500
if __name__ == "__main__":
app.run(debug=True)
Now, run your app and visit http://localhost:5000/logs to see your logs!
Usage
Logging Methods
Once initialized, LogSpot attaches the following methods to your Flask app instance:
logger.info(message)logger.debug(message)logger.warn(message)logger.error(message)logger.critical(message)
The /logs Endpoint
The /logs route supports several query parameters to help you find what you need:
| Parameter | Description | Default | Example |
|---|---|---|---|
limit |
Number of recent log lines to show | 200 |
/logs?limit=50 |
level |
Filter by log level (INFO, ERROR, etc.) | None |
/logs?level=ERROR |
search |
Case-insensitive search for a string | None |
/logs?search=database |
download |
Set to true to download logs as a .log file |
false |
/logs?download=true |
Examples:
-
Show last 50 error logs:
GET /logs?limit=50&level=ERROR -
Search for "connection failed":
GET /logs?search=connection%20failed -
Download all logs:
GET /logs?download=true&limit=0(Uselimit=0or a very large number to get all logs, though default is 200)
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file logspot-0.3.0.tar.gz.
File metadata
- Download URL: logspot-0.3.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
960a4edc980cdcb82f9251146b1bcf3bddc95e465390f655c8d2347e319ffac9
|
|
| MD5 |
f456599756325dd53ad0a098d9e44acc
|
|
| BLAKE2b-256 |
c6186a0701d11e2ded1860e916544ee60dec06630b394cf279ea10efecdf7738
|
File details
Details for the file logspot-0.3.0-py3-none-any.whl.
File metadata
- Download URL: logspot-0.3.0-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f03b9d11ee939d838e304c6a965281392293e4d6ddcb6950d606c2adfa213371
|
|
| MD5 |
b92e33e3f6cc6b68b22d8af4e7ac2faa
|
|
| BLAKE2b-256 |
687775e4423918489fb4281a1524cbec9fd3a62d4c6947a62608c39aa0bf9cba
|