LoggerPlusPlus is an enhanced Python logging module with colorized output, customizable themes, improved multi-logger management, and optimized display for better readability. Built on top of Loguru, it adds a set of features that make logging faster and more convenient to use.
Project description
LoggerPlusPlus
LoggerPlusPlus is an enhanced Python logging module built on top of Loguru.
It provides the same simple and powerful API, while adding extra features for better readability, productivity, and multi-logger management.
✨ Features
-
Dynamic identifier alignment:
Use{identifier:<auto}in your log format and all identifiers will be aligned automatically, with width adapting to the longest seen identifier. -
Truncation support:
Define a maximum width with[...]and choose how truncation should occur:
{identifier:<auto[18~middle]}
→ if the identifier is longer than 18 chars, it will be truncated with … in the middle.
-
LoggerClass: Any class can easily get a bound logger with its class name as identifier:
from loggerPlusPlus import LoggerClass class Worker(LoggerClass): def run(self): self.logger.info("Working...")
-
Extra decorators:
@catch→ same asloguru.logger.catch, with optionalidentifieror a pre-bound logger.opt()→ same asloguru.logger.opt, extended withidentifieror logger binding.@log_timing→ log execution time of functions (enter/exit messages configurable).@log_io→ log function parameters and/or return values.
-
Compatible with Loguru: All of Loguru’s core features (sinks, levels, filters, backtraces, etc.) remain available.
🚀 Installation
pip install loggerplusplus
🛠 Usage
Basic configuration
from loggerplusplus import add, remove, logger
remove()
add(
sink=sys.stderr,
level="DEBUG",
format=(
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
"<level>{level.name:<8}</level> | "
"[<blue>{identifier:<auto[18~middle]}</blue>] | "
"<level>{message}</level>"
),
)
logger.bind(identifier="MAIN").info("Hello from main")
Output:
2025-09-25 14:03:12.345 | INFO | [MAIN] | Hello from main
LoggerClass
from loggerplusplus import LoggerClass
class Service(LoggerClass):
def run(self):
self.logger.info("Service is running")
svc = Service()
svc.run()
Decorators
Catch exceptions
from loggerplusplus import catch
@catch(identifier="WORKER", level="ERROR")
def risky():
raise RuntimeError("Boom!")
risky()
Measure execution time
from loggerplusplus import log_timing
import time
@log_timing(identifier="TASK", enter_message="Starting {func}...", exit_message="Finished {func} in {duration:.2f}s")
def slow():
time.sleep(0.5)
slow()
Log function arguments / return values
from loggerplusplus import log_io
@log_io(identifier="CALC", log_args=True, log_return=True)
def add(a, b):
return a + b
add(3, 4)
📜 License
loggerplusplus is licensed under the GPLv3. It builds on top of Loguru (MIT license).
Author
Project created and maintained by Florian BARRE.
For any questions or contributions, feel free to contact me.
My Website | My LinkedIn | My GitHub
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 loggerplusplus-1.0.2.tar.gz.
File metadata
- Download URL: loggerplusplus-1.0.2.tar.gz
- Upload date:
- Size: 55.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a95c369289caa264b0388050cdedfad9e58944488a71f937bb4b225506172c8
|
|
| MD5 |
8862b87f979bc2463058117ad5239c7d
|
|
| BLAKE2b-256 |
e5ed979e702f493890965d261afffc6c7fa3eff22693bfdfcd77ff7be65a9608
|
File details
Details for the file loggerplusplus-1.0.2-py3-none-any.whl.
File metadata
- Download URL: loggerplusplus-1.0.2-py3-none-any.whl
- Upload date:
- Size: 48.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddba353e1ae684fff9f739c6e7234581451ad403e6b2596f2a685aff9e42feff
|
|
| MD5 |
a12641d135ef3bc3ea5bb2539e04499a
|
|
| BLAKE2b-256 |
8f08a0e05087c13b11df1ae54e7ba55811337b7035917044f8911ba4e6c83c0a
|