一个支持 异步、批量、重试、多通道通知 的 logging 扩展库。
不只是 logging handler
pip install pylogging-ext- cls:腾讯云 CLS 支持
pip install pylogging-ext[cls]
- socks:SOCKS 代理支持
pip install pylogging-ext[socks]
import logging
from pylogging_ext import TelegramHandler
logger = logging.getLogger('demo')
logger.setLevel(logging.INFO)
handler = TelegramHandler(
token='your-bot-token',
chat_id='your-chat-id',
)
logger.addHandler(handler)
logger.error('发生错误了')import logging
from logging.config import dictConfig
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S'
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'telegram': {
'level': 'WARNING',
'class': 'pylogging_ext.TelegramHandler',
'token': 'your-bot-token',
'chat_id': 'your-chat-id',
'formatter': 'standard'
},
},
'root': {
'handlers': ['console', 'telegram'],
'level': 'INFO'
}
}
dictConfig(LOGGING_CONFIG)
logger = logging.getLogger('root')
logger.error('发生错误了')定义 logging.conf
[loggers]
keys=root
[handlers]
keys=consoleHandler,telegramHandler
[formatters]
keys=standardFormatter
[logger_root]
level=INFO
handlers=consoleHandler,telegramHandler
[handler_consoleHandler]
class=logging.StreamHandler
level=INFO
formatter=standardFormatter
args=(sys.stdout,)
[handler_telegramHandler]
class=pylogging_ext.TelegramHandler
level=WARNING
formatter=standardFormatter
args=('your-bot-token', 'your-chat-id')
[formatter_standardFormatter]
format=%(asctime)s [%(levelname)s] %(name)s: %(message)s
datefmt=%Y-%m-%d %H:%M:%Simport logging
from logging.config import fileConfig
fileConfig('logging.conf')
logger = logging.getLogger('root')
logger.error('发生错误了')通用异步 Handler 基类,所有通知 Handler 均继承自此类。
batch_size批量发送大小flush_interval刷新间隔 (秒)queue_size队列大小retry重试次数
- 异步发送(非阻塞)
- 批量处理
- 指数退避重试
- 优雅关闭
from pylogging_ext import TencentCloudCLSHandler
handler = TencentCloudCLSHandler(
endpoint='ap-shanghai.cls.tencentcs.com',
secret_id='your-secret-id',
secret_key='your-secret-key',
topic_id='your-topic-id',
)endpointCLS接入地址secret_id腾讯云密钥secret_key腾讯云密钥topic_id日志主题 ID
from pylogging_ext import WeChatHandler
handler = WeChatHandler(
webhook='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'
)webhook企业微信机器人地址
from pylogging_ext import TelegramHandler
handler = TelegramHandler(
token='your-bot-token',
chat_id='your-chat-id',
proxies={
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890',
}
)tokenTelegram Bot Tokenchat_id聊天 IDproxies代理配置(可选)ssl_verifySSL校验 (默认 True)
from pylogging_ext import DingTalkHandler
handler = DingTalkHandler(
access_token='your-access-token',
secret='your-secret',
at_mobiles=['18600000000'],
)access_tokenWebhook URL 中的 access_tokensecret签名密钥(开启加签时必填)at_mobiles被@人的手机号(可选)is_at_all@所有人是 True,否则为 False (默认 False)
from pylogging_ext import FeiShuHandler
handler = FeiShuHandler(
webhook='https://open.feishu.cn/open-apis/bot/v2/hook/xxx',
secret='your-secret',
at_users=['ou_18eac8********17ad4f02e8bbbb']
)webhook飞书机器人地址secret签名密钥(开启加签时必填)at_users用户的 Open ID 或 User ID,@ 所有人时,填 all(可选)
- 腾讯云 CLS
- 企业微信
- Telegram
- 钉钉
- 飞书
持续扩展中...