Logprise is a Python package that seamlessly integrates loguru and apprise to provide unified logging and notification capabilities. It allows you to automatically send notifications when specific log levels are triggered, making it perfect for monitoring applications and getting alerts when important events occur.
- Unified logging interface that captures both standard logging and loguru logs
- Automatic notification delivery based on configurable log levels
- Batched notifications to prevent notification spam
- Flexible configuration through apprises extensive notification service support
- Periodic flushing of log messages at configurable intervals
- Automatic capture of uncaught exceptions
- Easy integration with existing Python applications
pip install logprise
Or if you're using Poetry:
poetry add logprise
Here's a simple example of how to use Logprise:
from logprise import logger
# Your logs will automatically trigger notifications
logger.info("This won't trigger a notification")
logger.warning("This won't trigger a notification")
logger.error("This will trigger a notification") # Default is ERROR level
# Notifications are automatically sent when your program exits
# or periodically according to the flush interval
Logprise uses Apprise for notifications, which supports a wide range of notification services. You can configure these in two ways:
Create an .apprise
file in one of the default configuration paths:
~/.apprise
[or%APPDATA%/Apprise/apprise
]~/.config/apprise
[or%LOCALAPPDATA%/Apprise/apprise
]- '/etc/apprise' [or
%ALLUSERSPROFILE%/Apprise/apprise
]
For more possible configuration file locations, please check: DEFAULT_CONFIG_PATHS
in apprises source code.
Example configuration:
mailto://user:[email protected]
tgram://bot_token/chat_id
slack://tokenA/tokenB/tokenC/#channel
You can easily add more notification services programmatically:
from logprise import appriser
# Add a single URL
appriser.add("mailto://user:[email protected]")
# Add multiple URLs
appriser.add(["tgram://bot_token/chat_id", "slack://tokenA/tokenB/tokenC/#channel"])
# Add URLs with tags
appriser.add("discord://webhook_id/webhook_token", tag=["critical"])
See Apprise's configuration guide for the full list of supported services and their configuration.
You can set the minimum log level that triggers notifications:
from logprise import appriser, logger
# Using string level names
appriser.notification_level = "WARNING" # or "DEBUG", "INFO", "ERROR", "CRITICAL"
# Using integer level numbers
appriser.notification_level = 30 # WARNING level
# Using loguru Level objects
appriser.notification_level = logger.level("ERROR")
Logprise offers several ways to control when notifications are sent:
from logprise import appriser
# Set the flush interval for periodic notifications (in seconds)
appriser.flush_interval = 3600 # Default is hourly
# Manually send notifications immediately
appriser.send_notification()
# Clear the notification buffer
appriser.buffer.clear()
# Stop the periodic flush thread
appriser.stop_periodic_flush()
# Manually cleanup and flush pending notifications
appriser.cleanup()
Logprise automatically captures uncaught exceptions and sends notifications. This helps you detect and respond to unexpected application failures:
# This will be logged and trigger a notification
raise ValueError("Something went wrong")
To contribute to the project:
# Clone the repository
git clone https://github.com/yourusername/logprise.git
cd logprise
# Install dependencies
poetry install
# Run tests
poetry run pytest
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.