A comprehensive logging library for Python applications with minimal code changes
Project description
LogEverything
Add decorators to your functions for automatic, comprehensive logging. LogEverything captures inputs, outputs, execution times, and call hierarchy with thread safety, async isolation, and beautiful formatting out of the box.
10k ops/secCore Logging Throughput |
<0.5msDecorator Overhead |
7.9k ops/secPrint Capture |
395 tests65% coverage |
Why LogEverything?
Most Python logging libraries make you choose: simple but limited (logging), fast but
opinionated (loguru), or structured but complex (structlog). LogEverything combines
decorator-based function tracing, native async support, structured JSON output, file
rotation, and a companion monitoring dashboard all with zero-config defaults and
production-grade performance.
| Feature | logging |
loguru |
structlog |
LogEverything |
|---|---|---|---|---|
| Zero-config decorators | :white_check_mark: | |||
| Hierarchical call tracing | :white_check_mark: | |||
| Async-native with task isolation | :white_check_mark: | :white_check_mark: | ||
| Structured JSON output | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
| File rotation + gzip compression | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
| Print capture (stdout redirect) | :white_check_mark: | |||
| Monitoring dashboard | :white_check_mark: | |||
| Configuration profiles | :white_check_mark: |
Install
pip install logeverything
Quick Start
Logger
from logeverything import Logger
log = Logger("my_app")
log.info("Application started")
log.warning("Disk usage high")
log.error("Connection failed")
Decorators
from logeverything import Logger
from logeverything.decorators import log
app_log = Logger("my_app")
@log # auto-detect context
def process(items):
return sum(items)
@log(using="my_app") # target a specific logger
def validate(data):
return len(data) > 0
process([1, 2, 3])
validate("hello")
Output:
-> process(items=[1, 2, 3]) [app.py:7]
<- process (0.03ms) -> 6
-> validate(data='hello') [app.py:11]
<- validate (0.01ms) -> True
Hierarchical Call Tracing
from logeverything.decorators import log_function
@log_function
def main():
step1()
@log_function
def step1():
step2()
@log_function
def step2():
print("Processing...")
main()
-> main() [app.py:3]
| -> step1() [app.py:7]
| | -> step2() [app.py:11]
| | | Processing...
| | <- step2 (0.12ms)
| <- step1 (0.45ms)
<- main (1.02ms)
Async
from logeverything import AsyncLogger
import asyncio
log = AsyncLogger("worker")
async def fetch(url):
log.info(f"GET {url}")
await asyncio.sleep(0.1)
log.info("Done")
asyncio.run(fetch("https://api.example.com"))
Profiles
from logeverything import Logger
log = Logger("my_app")
log.configure(profile="production") # minimal overhead, structured output
log.configure(profile="development") # rich colors and visual hierarchy
log.configure(profile="api") # optimized for web services
CLI Tool
$ logeverything version
logeverything 0.1.0
Python 3.11.9
Platform: Windows-10-10.0.26100-SP0
$ logeverything doctor
logeverything doctor
[] Python 3.11.9
[] psutil 5.9.5
[] celery (not installed)
[] py.typed marker present
[] Dashboard at localhost:8999 (not reachable)
$ logeverything init
Select environment type:
1) web 2) script 3) notebook
Creates logging_config.py with sensible defaults
Also available as python -m logeverything.
File Rotation
from logeverything.handlers import TimedRotatingFileHandler
handler = TimedRotatingFileHandler(
"logs/app.log",
when="midnight", # rotate daily at midnight
retention_days=30, # keep 30 days of logs
compress=True, # gzip old files
)
Size-based rotation with compression is also supported via FileHandler:
from logeverything.handlers import FileHandler
handler = FileHandler(
"logs/app.log",
max_size=10_485_760, # 10 MB
backup_count=5,
compress=True, # gzip rotated files
)
For dashboard-compatible structured output, attach JSONLineFormatter to any handler:
from logeverything.handlers import FileHandler, JSONLineFormatter
handler = FileHandler("logs/app.jsonl", max_size=10_485_760, backup_count=5)
handler.setFormatter(JSONLineFormatter(source="my_service"))
Architecture
graph TD
A["Your Code"] -->|"@log decorator"| B["Decorators"]
B --> C["Logger / AsyncLogger"]
C --> D["ConsoleHandler"]
C --> E["FileHandler + Rotation"]
C --> F["JSONHandler"]
C --> G["HTTP / TCP / UDP Transport"]
G --> H["Dashboard"]
E -->|"JSONL files"| H
Features
|
Core
|
Performance & Safety
|
|
Output
|
Integrations
|
Monitoring Dashboard
A companion web dashboard for exploring logs, operations, and system metrics in real time. The dashboard is not included in the base pip install logeverything install it separately using one of the methods below.
Install from PyPI
pip install logeverything-dashboard
# Start the dashboard
logeverything-dashboard # http://localhost:3001
# Point it at your log directory
logeverything-dashboard --data-dir ./logs
# Or connect to a remote LogEverything API
logeverything-dashboard --api-url http://localhost:8080/api/v1
Install from Source
If you cloned the LogEverything repo, the dashboard is included in the logeverything-dashboard/ directory:
cd logeverything-dashboard
pip install -r requirements.txt
# (Optional) Copy and edit the config file
cp config/settings.example.yaml config/settings.yaml
# Start the dashboard
python run_dashboard.py # http://localhost:3001
|
Pages
|
Capabilities
|
Dashboard Guide full documentation with screenshots, API endpoints, and customisation.
Documentation
| Installation | Setup and optional extras |
| Quick Start | First steps with LogEverything |
| User Guide | Logger classes, decorators, profiles, handlers, async, integrations |
| Dashboard | Monitoring dashboard setup and usage |
| API Reference | Complete module and class reference |
| Advanced | Performance tuning and production deployment |
Contributing
Contributions welcome. See the Contributing Guide.
pip install -e ".[dev]"
logeverything doctor # check environment and optional deps
make test # run tests with coverage
make lint # flake8, black, isort, mypy, bandit
make format # auto-format
License
MIT License. See LICENSE for details.
Built for developers who believe every function call tells a story.
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 logeverything-0.0.1.tar.gz.
File metadata
- Download URL: logeverything-0.0.1.tar.gz
- Upload date:
- Size: 388.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b84c63a2e8a36fcd37460dc5113d6149ef83110c1906e4904e43420830f86259
|
|
| MD5 |
1658705f23bb2c799b2e40612c2fef3c
|
|
| BLAKE2b-256 |
bcea4a56b1e2389f11448f17a18bf33a827af58c7e99cf6eba4875fa6b13a3e4
|
Provenance
The following attestation bundles were made for logeverything-0.0.1.tar.gz:
Publisher:
release.yml on RamishSiddiqui/logeverything
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
logeverything-0.0.1.tar.gz -
Subject digest:
b84c63a2e8a36fcd37460dc5113d6149ef83110c1906e4904e43420830f86259 - Sigstore transparency entry: 1418172525
- Sigstore integration time:
-
Permalink:
RamishSiddiqui/logeverything@771fa47b5d15a32730cbb7900e1e8094e8fdb1fc -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/RamishSiddiqui
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@771fa47b5d15a32730cbb7900e1e8094e8fdb1fc -
Trigger Event:
release
-
Statement type:
File details
Details for the file logeverything-0.0.1-py3-none-any.whl.
File metadata
- Download URL: logeverything-0.0.1-py3-none-any.whl
- Upload date:
- Size: 379.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
646a777d29b398fa5b4d5472bd6576f0981b3dee8ad44707936eba0bc747589b
|
|
| MD5 |
5c889149d6c01ba624b305c7fe5a4011
|
|
| BLAKE2b-256 |
0e6a36bf7d8605f62a850c221f91a632dd1638aa429d4a33523520ecddbcdec5
|
Provenance
The following attestation bundles were made for logeverything-0.0.1-py3-none-any.whl:
Publisher:
release.yml on RamishSiddiqui/logeverything
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
logeverything-0.0.1-py3-none-any.whl -
Subject digest:
646a777d29b398fa5b4d5472bd6576f0981b3dee8ad44707936eba0bc747589b - Sigstore transparency entry: 1418172535
- Sigstore integration time:
-
Permalink:
RamishSiddiqui/logeverything@771fa47b5d15a32730cbb7900e1e8094e8fdb1fc -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/RamishSiddiqui
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@771fa47b5d15a32730cbb7900e1e8094e8fdb1fc -
Trigger Event:
release
-
Statement type: