一个 python 日志处理程序,通过 Telegram Bot Api 发送日志。
项目描述
一个 python 日志处理程序,通过 Telegram Bot Api 发送日志
安装
通过点子:
pip install python-telegram-handler
用法
注册一个新的电报机器人并获得一个身份验证令牌。(此处的说明https://core.telegram.org/bots#3-how-do-i-create-a-bot)
之后,您必须获得一个chat_id。您可以使用包含的简单脚本来做到这一点。与新创建的机器人开始新的对话,给它写点东西(首先发起对话很重要)。
此外,处理程序可以自动检索chat_id。这将在处理程序初始化时完成。但是您仍然必须开始与机器人对话。请注意:如果程序停止、服务器重新启动或发生其他事情 - 处理程序将尝试从电报中检索聊天 ID,如果找不到来自您的新消息,则可能会失败。所以我建议你使用下面的脚本来获取聊天 ID。
然后运行一个命令:
python -m telegram_handler <your token here>
如果一切正常,一个chat_id将被打印到标准输出。
使用token和chat_id,以您想要的方式配置日志处理程序。例如,使用 dictConfig:
{
'version': 1,
'handlers': {
'telegram': {
'class': 'telegram_handler.TelegramHandler',
'token': 'your token',
'chat_id': 'chat id'
}
},
'loggers': {
'my_logger': {
'handlers': ['telegram'],
'level': 'DEBUG'
}
}
}
格式化
目前发送消息的格式很简单:<code>%(asctime)s</code> <b>%(levelname)s</b>\nFrom %(name)s:%(funcName)s\n% (message)s 异常回溯将被格式化为预先格式化的固定宽度代码块。(https://core.telegram.org/bots/api#html-style)
如果要调整它,请使用所需的格式字符串配置电报处理程序.HtmlFormatter。使用 dictConfig:
...
{
'formatters': {
'telegram': {
'class': 'telegram_handler.HtmlFormatter',
'fmt': '%(levelname)s %(message)s'
}
}
'handlers': {
'telegram': {
'class': 'telegram_handler.TelegramHandler',
'formatter': 'telegram',
'token': 'your token',
'chat_id': 'chat id'
}
}
}
...
如果您愿意,可以在 HtmlFormatter 中启用表情符号。只需在 HtmlFormatter 设置中指定use_emoji=True 即可。这将在 levelname 中添加一个 :white_circle: 用于 DEBUG,:large_blue_circle: 用于 INFO,以及 :red_circle: 用于 WARNING 和 ERROR 级别。
代理人
如果您必须在 Telegram 服务器被 gowrnment 阻止的国家/地区使用此软件包,您可以在 config.xml 中指定代理 url。使用 dictConfig:
...
{
'handlers': {
'telegram': {
'class': 'telegram_handler.TelegramHandler',
'formatter': 'telegram',
'token': 'your token',
'chat_id': 'chat id',
'proxies': {
'http': 'socks5://user:pass@host:port',
'https': 'socks5://user:pass@host:port'
}
}
}
}
...
重要的!如果您打算使用socks代理,请确保您安装了带有socks支持的requests包:
pip install requests[socks]
历史
2.2.0 (2019-08-19)
添加代理支持 (#20) (by )
2.1.0 (2019-04-25)
如果消息太大,则将消息作为文件发送
MarkdownFormatter 中的修复
HTMLFormatter 中的修复
聊天 ID 检索修复
从测试中删除 py33 支持
更新 setup.py 分类器
删除了 HtmlFormatter 中的 print()-calls (#12) (by Lukas Garberg)
2.0.2 (2017-11-20)
修复 HtmlFormatter.format 中的 TypeError(通过 tompipen)
2.0 (2017-03-01)
重构 HtmlFormatter 和 MarkdownFormatter
重构的 TelegramHandler
不再需要调用命令来获取 chat_id - 它将在处理程序初始化时自动获取
重写测试
在 HtmlFormatter 中转义 LogRecord 的东西
在 HtmlFormatter 中添加了可选的表情符号。
1.1.3 (2016-09-22)
未设置 StyledFormatter 的 escape_message 字段(@ihoru)
1.1.2 (2016-05-13)
固定 setup.py 需要选项(更改为 install_requires)
1.1.1 (2016-04-20)
使用 HTML 格式化程序作为电报处理程序的默认格式化程序
1.1.0 (2016-04-20)
引入 HTML 格式化程序
添加了日志文本转义(关闭#3)
添加了请求超时设置(关闭 #1)
捕获并记录所有请求及其异常(关闭 #2)
1.0.0 (2016-04-19)
第一个 PyPi 版本
0.1.0 (2016-04-19)
初始发行