Python logging library with support for multiple destinations
Project description
loghandler
Easy logging package for all your logging needs.
Features
- Log to multiple endpoints at once
- Support for STDOUT, Elasticsearch, Database (MySQL, PostgreSQL, SQLite), and more coming soon.
- Easy syntax
Installing
Install loghandler via pip
pip install loghandler
Using
In your code import LogHandler and initalize it.
from loghandler import LogHandler
logger = LogHandler({
"log_level": "DEBUG",
"outputs": [
{
"type": "STDOUT"
}
]
})
You can now log messages to all your outputs via:
logger.log('fatal', Exception("Something went HORRIBLY wrong"))
Endpoints
The following endpoints are currently in the works and will be supported soon.
- logstash
- sentry
General Configuration
All endpoints accept a few global settings. They are shown below.
log_level
: For the output it's applied to, this will overrule the global configuration level
STDOUT
To use STDOUT as a log endpoint, add the following to your outputs array.
{
"type": "STDOUT"
}
Elasticsearch
To use elasticsearch as a log endpoint, add the following to your outputs array.
{
"type": "elasticsearch",
"config": {
"hosts": ["https://your-es-host.com:9243"],
"ssl": True,
"verify_certs": True,
"index": "your-index", # Index will be created if it doesn't exist
"api_key": ("your-api-key-id", "your-api-key-secret")
}
}
Next time something is logged you should see something like the following under your index:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "some-id",
"_score" : 1.0,
"_source" : {
"timestamp" : "2021-11-05T04:16:25.250206",
"level" : "DEBUG",
"hostname" : "YOUR-HOSTNAME",
"message" : "division by zero",
"occurred_at" : {
"path" : "/somepath/test.py",
"line" : 22
}
}
}
Database
Table Structure
Table(
db_config["table_name"],
metadata,
Column("id", Integer, primary_key=True),
Column("message", Text),
Column("level", String),
Column("origin", String),
Column("timestamp", DateTime),
)
sqlite
To use sqlite as a log endpoint, add the following to your outputs array.
{
"type": "sqlite",
"config": {
"table_name": "logs", # Will be created if it doesn't exist
"db_path": "/path/to/db.sqlite", # Will be created if it doesn't exist
}
}
Next time something is logged you should see something like the following under your table:
('division by zero', 'DEBUG', '/somepath/test.py:31', '2021-11-07 01:27:24.755989')
mysql
To use mysql as a log endpoint, add the following to your outputs array.
{
"type": "mysql",
"config": {
"table_name": "logs",
"connection_string": "root:example@localhost:3306/example_db"
}
}
Next time something is logged you should see something like the following under your table:
division by zero | DEBUG | /somepath/test.py:22 | 2021-11-07 01:46:58
pgsql (PostgreSQL)
To use pgsql as a log endpoint, add the following to your outputs array.
{
"type": "pgsql",
"config": {
"table_name": "logs",
"connection_string": "postgres:postgres@localhost:5432/example"
}
}
Next time something is logged you should see something like the following under your table:
division by zero | DEBUG | /somepath/test.py:22 | 2021-11-07 01:46:58
Project details
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
Hashes for loghandler-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b8e4450dc5b4578711d31f78d4e3491d7ebea65f6ae507445318fcd690c1b35 |
|
MD5 | 9ee0fd28dffb9d8e040a8e1d5b66be47 |
|
BLAKE2b-256 | fc581907f511d4e814de8732507ae30391b99ec89a799d70b17c2a5f54ebb1c8 |