Custom logging handler for AskLora projects
Project description
LORA Logger
This package contains both the customised handler for saving the logs into a elasticsearch database, and a factory for creating customised loggers that can use that handler.
The customised handler will forward the logs to an existing logging service through our own celery service. This logging service will handle the logs and input them into the database. This is done to unionise the logs into a single database.
Diagram
flowchart LR
services["Services\n<small>All backend projects\nthat need the logging\nsystem</small>"]-->producer[[Producer]]
subgraph "LoraLogger package"
producer-->queue[Queue]
end
queue-->consumer[[Consumer]]
subgraph "AskLora logger service"
consumer-->database[(<small>ElasticSearch\nDatabase</small>)]
end
How to use
Currently, this package exports a logging handler. Loggers with this handler will be automatically send the records to the elasticsearch server set using the environment variable.
Package installation
there are two ways to install this pacakge
- install the package locally. first, build the project:
poetry build
then you can install using pippip install /path/to/logger/dist/loralogger-0.2.4-py3-none-any.whl
- Install the package from pip
pip install loralogger
Using this package
First, set these environment variables:
# Set amqp backend
AMQP_BROKER=localhost
AMQP_PORT=5672
AMQP_USER=rabbitmq
AMQP_PASSWORD=rabbitmq
# set results backend
REDIS_HOST=localhost
REDIS_PORT=6379
Then you can use the logger in two some ways:
-
Use dedicated logger instances for specific projects. These will be automatically log to Elasticsearch (i.e. using the ESHandler)
- import the from loralogger logger factory
from loralogger import LoraLogger
-
get the logger instance
askloraxalpacalogger = LoraLogger.asklora(log_to_console=True)
-
Use the logger instance
askloraxalpacalogger.info("This works!")
-
Use the logger factory for custom logger instances. Please note that logging to Elasticsearch will need to be configured first to create the index.
-
import the from loralogger logger factory
from loralogger import LoraLogger
-
create a logger instance, the logger name should point to the Elasticsearch index name you want to send the logs into, with the word "-logs" appended to it (this, for instance, will send the logs to
backend-logs
index)test_logger = LoraLogger.get_logger('backend', log_to_es=True) # We need to set this on or it wont send to Elasticsearch
-
use the logger
test_logger.warning("Careful!")
-
-
Use the handler directly to your own logger instance:
-
import the handler
from loralogger import LogToESHandler
-
initialise logging instance
backend_logger = logging.getLogger("backend")
-
Create the handler instance, same as the above, the label should point to an existing Elasticsearch index
handler = LogToESHandler(label="backend")
-
add the handler instance to the logger
backend_logger.addHandler(handler)
-
Use the logger
backend_logger.info("This is an info")
-
Notes
- if the pip installation fails, check this link https://github.com/celery/librabbitmq/issues/131#issuecomment-661884151
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
File details
Details for the file loralogger-0.2.5.tar.gz
.
File metadata
- Download URL: loralogger-0.2.5.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0b3 CPython/3.9.13 Linux/5.15.0-41-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1beaf6b5708fad2451c06d1b433c150c780b492ae0abb01194c2ff42248e6dee |
|
MD5 | 7b9d5cadb6575ceb536904d95f196e6e |
|
BLAKE2b-256 | cb9ce5e44487038cc08eca49ac323432058a14cc5800b7a9a7b9695242179d8d |
File details
Details for the file loralogger-0.2.5-py3-none-any.whl
.
File metadata
- Download URL: loralogger-0.2.5-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0b3 CPython/3.9.13 Linux/5.15.0-41-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d3650088d7bba4040a8224cc5e79f80cffcb1b0c17ffe91afe34286fb388d70 |
|
MD5 | e3aeacd8469ba28f9dc99d53f99e4fd9 |
|
BLAKE2b-256 | d3f4cf5aed5622f57c920e23d4c7d824ee6a4c457a68fcf209c86860574d815c |