通过telegram bot api发送日志的python日志处理程序。

python-telegram-handler的Python项目详细描述


https://img.shields.io/pypi/status/python-telegram-handler.svghttps://img.shields.io/pypi/pyversions/python-telegram-handler.svghttps://badge.fury.io/py/python-telegram-handler.svghttps://travis-ci.org/sashgorokhov/python-telegram-handler.svg?branch=masterhttps://codecov.io/github/sashgorokhov/python-telegram-handler/coverage.svg?branch=masterCode Climatehttps://img.shields.io/github/license/sashgorokhov/python-telegram-handler.svg

通过telegram bot api发送日志的python日志处理程序

安装

通过PIP:

pip install python-telegram-handler

用法

注册一个新的电报机器人并获得一个authentication token。(此处说明https://core.telegram.org/bots#3-how-do-i-create-a-bot

之后,您必须获得chat_id。您可以使用附带的简单脚本来实现这一点。使用新创建的bot启动新对话,并向其写入内容(首先启动对话很重要)。

此外,处理程序还可以自动检索chat_id。这将在处理程序初始化时完成。但你还是得和机器人开始对话。注意:如果程序停止,服务器重新启动,或者发生其他事情,处理程序将尝试从电报中检索聊天ID,如果找不到来自您的新消息,则可能会失败。因此,我建议您使用下面的脚本获取聊天ID。

然后运行命令:

python -m telegram_handler <your token here>

如果一切顺利,一个chat_id将被打印到stdout。

使用tokenchat_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

如果要调整它,请使用所需的格式字符串配置telegram_handler.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中启用emoji符号。只需在htmlformatter设置中指定使用emoji=true。 这将添加到levelname a:white_circle:用于调试,:large_blue_circle:用于信息,和:red_circle:用于警告和错误级别。

代理

如果必须在政府阻止电报服务器的国家内使用此包,则可以在配置中指定代理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代理,请确保安装了requestspackage和sockssupport:

pip install requests[socks]

历史

2.1.0(2019-04-25)

  • 如果消息太大,则将其作为文件发送
  • markdownformatter中的修复程序
  • htmlformatter中的修复程序
  • 聊天室ID检索修复程序
  • 从测试中删除PY33支持
  • 更新setup.py分类器
  • 删除print()-调用htmlformatter(12)(由lukas garberg提供)

2.0.2(2017-11-20)

  • 修复htmlformatter.format中的typeerror(由tompipen提供)

2.0(2017-03-01)

  • 重构的htmlformatter和markdownformatter
  • 重构的电报处理程序
  • 无需再调用命令来获取聊天室ID—它将在handler init上自动获取
  • 重写测试
  • 在htmlformatter中转义日志记录
  • 在htmlformatter中添加了可选的emoji符号。

1.1.3(2016-09-22)

  • 设置styledformatter missed(@ihoru)的escape_消息字段

1.1.2(2016-05-13)

  • fixed setup.py requires选项(更改为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)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring JSTL:绝对uri:http://java.sun.com/jsp/jstl/core无法在两个站点中解析。xml或与此应用程序一起部署的jar文件   java在Junit测试中找不到失败的符号   java为什么在没有同步块的情况下调用wait()、notify()或notifyAll()不是编译器错误?   使用onDraw()绘制多个位图的java Android在曲面视图上放大缩小画布   在java中比较args值和字符串   java更改文件中的特定字节   java TransformerFactory破坏<html>标记中的<input>和<br>标记   azure appinsights java自定义指标不起作用   Java泛型在实现接口的类上指定上界,接口本身指定上界   java AS400 prog和动态类路径   java应用程序截图时收到空消息   java无法从片段中获取上下文   找不到java配置单元UDF类   linux是一个提供java的接口。lang.NoClassDefFoundError   java如何使用面向对象建模创建此数据库