A collection of useful logging tools
Project description
logging_extras
A collection of useful logging tools for Python 3.
Installation
The majority of the tools in this library require no additional dependencies. To install the library with the base functionality use the following command.
pip install logging-extras
To use the MQTT* classes, install the library with the following command.
pip install logging-extras[mqtt]
Tools
MQTThandler- A logging handler that publishes logs to an MQTT broker.RelativeTimeFilter- A logging filter that adds a relative time to the log record.DiffTimeFilter- A logging filter that adds a time difference to the log record.TieredFormatter- A logging formatter that allows for different formatting based on the log level.log_function_call- A decorator that logs the arguments and return value of a function call.
Upcomming tools:
MQTTSubscriber- A logging listener that subscribes to an MQTT broker and logs messages.
Examples
MQTThandler
import logging
from paho.mqtt.client import Client
from logger_extras import MQTTConfig, MQTThandler
handler = MQTThandler(
host="localhost",
topic="logs",
append_logger_name=True,
)
handler.setFormatter(logging.Formatter("%(levelname)s - %(message)s)"))
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("Hello World!")
# This will publish the following message to the MQTT broker on the topic "logs/__main__":
# {
# "timestamp": 1690226241.740354,
# "message": "INFO - Hello World!",
# "raw_message": "Hello World!",
# "level": "INFO", "name": "__main__"
# }
RelativeTimeFilter
import logging
from time import sleep
from logger_extras import RelativeTimeFilter
handler = logging.StreamHandler()
relative_time_filter = RelativeTimeFilter()
handler.addFilter(relative_time_filter)
handler.setFormatter(logging.Formatter("%(reltime).3f - %(message)s"))
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("Hello World!")
sleep(2)
logger.info("Hello World!")
relative_time_filter.reset_time_reference()
sleep(1)
logger.info("Hello World!")
# This will log the following:
# 0:00:00 - Hello World!
# 0:00:02 - Hello World!
# 0:00:01 - Hello World!
DiffTimeFilter
import logging
from time import sleep
from logger_extras import DiffTimeFilter
handler = logging.StreamHandler()
handler.addFilter(DiffTimeFilter())
handler.setFormatter(logging.Formatter("%(difftime).3f - %(message)s"))
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("Hello World!")
sleep(2)
logger.info("Hello World!")
sleep(1)
logger.info("Hello World!")
# This will log the following:
# 0:00:00 - Hello World!
# 0:00:02 - Hello World!
# 0:00:01 - Hello World!
TieredFormatter
import logging
from logger_extras import TieredFormatter
handler = logging.StreamHandler()
handler.setFormatter(
TieredFormatter(
fmt="%(levelname)s - %(message)s",
level_fmts={
logging.DEBUG: "%(levelname)s - %(funcName)s:%(lineno)d - %(message)s",
logging.INFO: "%(message)s",
},
datefmt=None,
style="%",
validate=True,
)
)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.debug("Hello World!")
logger.info("Hello World!")
logger.warning("Hello World!")
logger.error("Hello World!")
logger.critical("Hello World!")
# This will log the following:
# DEBUG - __main__:19 - Hello World!
# Hello World!
# WARNING - Hello World!
# ERROR - Hello World!
# CRITICAL - Hello World!
log_function_call
from logger_extras import log_function_call
@log_function_call(level=logging.INFO)
def add(a, b):
return a + b
_ = add(1, 2)
# This will log the following:
# 2021-08-03 12:00:00,000 - INFO - Calling __main__.add(a=1, b=2)
# 2021-08-03 12:00:00,000 - INFO - '__main__.add' returned 3
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 logger_extras-0.4.2.tar.gz.
File metadata
- Download URL: logger_extras-0.4.2.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f29687f4f39c1686438d3a357adcc1aa2733ef2b6ced9f09d0642c9816aae4b9
|
|
| MD5 |
d1d216eb627d09e5596a066bed9e4d31
|
|
| BLAKE2b-256 |
0bb9aa3e24912a1c3da3ac51852dbc4a110b3edf0be319105d054788274b9a02
|
Provenance
The following attestation bundles were made for logger_extras-0.4.2.tar.gz:
Publisher:
test_build.yml on WillB97/logger-extras
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
logger_extras-0.4.2.tar.gz -
Subject digest:
f29687f4f39c1686438d3a357adcc1aa2733ef2b6ced9f09d0642c9816aae4b9 - Sigstore transparency entry: 171703174
- Sigstore integration time:
-
Permalink:
WillB97/logger-extras@e153f4775d7dd83371ddf2551ab21e4da556f741 -
Branch / Tag:
refs/tags/0.4.2 - Owner: https://github.com/WillB97
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test_build.yml@e153f4775d7dd83371ddf2551ab21e4da556f741 -
Trigger Event:
push
-
Statement type:
File details
Details for the file logger_extras-0.4.2-py3-none-any.whl.
File metadata
- Download URL: logger_extras-0.4.2-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bc2125b84eab3d3e6f2239eb0abf8a06be5105590a09d7b6afe5fed39dfcbbf
|
|
| MD5 |
ce927928af9507118014db71a792f60c
|
|
| BLAKE2b-256 |
0aece0c4b318c44e39c2cb894d2024e5d24720ba82445c100fad2056db63ada6
|
Provenance
The following attestation bundles were made for logger_extras-0.4.2-py3-none-any.whl:
Publisher:
test_build.yml on WillB97/logger-extras
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
logger_extras-0.4.2-py3-none-any.whl -
Subject digest:
5bc2125b84eab3d3e6f2239eb0abf8a06be5105590a09d7b6afe5fed39dfcbbf - Sigstore transparency entry: 171703176
- Sigstore integration time:
-
Permalink:
WillB97/logger-extras@e153f4775d7dd83371ddf2551ab21e4da556f741 -
Branch / Tag:
refs/tags/0.4.2 - Owner: https://github.com/WillB97
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test_build.yml@e153f4775d7dd83371ddf2551ab21e4da556f741 -
Trigger Event:
push
-
Statement type: