A custom asynchronous logging library with Elasticsearch integration.
Project description
Async Logger
Async Logger is a custom Python logging library designed to log messages asynchronously to both the console and Elasticsearch.
It is built on top of Python's logging module and integrates with Elasticsearch using the AsyncElasticsearch client.
This allows for non-blocking, asynchronous logging in distributed environments.
Features
- Asynchronous logging to Elasticsearch.
- Buffered log messages with periodic flushing to avoid performance hits.
- Customizable logging levels (DEBUG, INFO, WARNING, ERROR, CRITICAL).
- Integrated console logging.
Installation
Install the package using pip:
pip install async_elastic_logger
Usage
Here’s an example of how to use AsyncLogger in your Python application.
1. Define your configuration class using pydantic
You'll need to use pydantic to define a settings class that contains your Elasticsearch configurations.
from pydantic import BaseSettings
class ElasticLoggerConfig(BaseSettings):
elastic_url: str
elastic_username: str
elastic_password: str
elastic_log_level: str = "WARNING"
elastic_log_index_name: str = "logs"
2. Use the get_logger function to get the singleton logger
Once you have the configuration, you can get the logger instance using the get_logger function. The logger is created as a singleton, so the same instance will be returned every time you call get_logger.
from async_logger.logger import get_logger, ElasticLoggerConfig
# Define your Elasticsearch logger configurations
config = ElasticLoggerConfig(
elastic_url="https://your-elasticsearch-url",
elastic_username="your-username",
elastic_password="your-password",
elastic_log_level="INFO", # or DEBUG, ERROR, etc.
elastic_log_index_name="your-log-index"
)
# Get the singleton logger instance
logger = get_logger(config)
# Log messages
await logger.info("This is an info message")
await logger.error("This is an error message")
await logger.debug("This is a debug message")
3. Handling log levels
You can specify the logging level for Elasticsearch logs using the elastic_log_level field in your configuration. It accepts values like DEBUG, INFO, WARNING, ERROR, or CRITICAL.
For example:
config = ElasticLoggerConfig(
elastic_url="https://your-elasticsearch-url",
elastic_username="your-username",
elastic_password="your-password",
elastic_log_level="DEBUG", # Logs at DEBUG level
elastic_log_index_name="your-log-index"
)
4. Configuration flexibility
You can easily switch the log level or Elasticsearch index by updating the configuration parameters. This allows you to fine-tune logging based on the environment or the level of detail you want in your logs.
5. Singleton behavior
Once the logger is instantiated with the configuration, subsequent calls to get_logger will return the same instance, ensuring that logging across your application is handled consistently.
License
This project is licensed under the MIT License. See the LICENSE file for details.
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 async_elastic_logger-0.4.5.1.tar.gz.
File metadata
- Download URL: async_elastic_logger-0.4.5.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d589569b490f32ed8c52c4d9fbfc0396337eb1a5f6383ade5d68b873a44ff3b
|
|
| MD5 |
a3615bc0eea12b524969bc17c7b8fc4a
|
|
| BLAKE2b-256 |
8ed127d13201e040bf1b7a2963cd2e15c4eef4aedc2f5bea56d5a8a3408a6b67
|
File details
Details for the file async_elastic_logger-0.4.5.1-py3-none-any.whl.
File metadata
- Download URL: async_elastic_logger-0.4.5.1-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e53536f9961047b27fd0542241ecf5feebc40cf9866842114f688f069bed550
|
|
| MD5 |
2adef222fab689a2e091f7c4bc684cb2
|
|
| BLAKE2b-256 |
1d5c1cafa263e664892b81e5082d624653434cb36766c6670da6f93e7febc1f9
|