一组有用的日志工具
项目描述
logging_extras
Python 3的一组有用日志工具。
安装
此库中的大多数工具不需要额外的依赖项。要使用基本功能安装库,请使用以下命令。
pip install logging-extras
要使用 MQTT*
类,请使用以下命令安装库。
pip install logging-extras[mqtt]
工具
MQTThandler
- 将日志发布到MQTT代理的日志处理器。RelativeTimeFilter
- 向日志记录添加相对时间的日志过滤器。DiffTimeFilter
- 向日志记录添加时间差的日志过滤器。TieredFormatter
- 允许根据日志级别进行不同格式的日志格式化器。log_function_call
- 记录函数调用参数和返回值的装饰器。
即将到来的工具
MQTTSubscriber
- 订阅MQTT代理并记录消息的日志监听器。
示例
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
项目详情
关闭
logger_extras-0.4.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e2a181b8ee05e66e7a5d0a7b6941daf5fe1d5094cdfd51041be17e5943f26b6 |
|
MD5 | c5ea777ef914a39586fd324926ddd82a |
|
BLAKE2b-256 | 98d478027443a33fcccaf23b0893902125d9c485e9f10dfd040cf73aa1bdc8e2 |
关闭
logger_extras-0.4.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ad3b7e89dc31923f7c8cde25bf479c7d8b8119135fe1399378b9f727015c4b21 |
|
MD5 | 3e386ee625bbe2a88341d9cd39dc9656 |
|
BLAKE2b-256 | 97884a736b332f73ebea8896d8e55ba0728b60b6d5f28a98a1c55a0105c4b69d |