通过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第三方库


热门话题
Java GlazedList单个列筛选   java Android按顺序从Gallery接收图像   无法解析java“”如何解决此错误?   使用所有源代码生成maven项目的jar的java   java从Android应用程序将数据插入MySQL数据库。数据库中未反映的更改   java如何使此方法可重用?   java@JsonInclude(Include.NON_NULL)不会从内部POJO中删除NULL字段   xml如何解压java。尼奥。使用JAXB的路径?   java Maven未使用服务器的servletapi构建   java我觉得在实体中添加带有@Transient注释的字段非常容易出错。我说得对吗?   java需要什么样的线程启动方法?为什么没有唯一的运行方法?   Apache CXF Maven发行版和CXF发行版之间的java差异   java如何处理播放数据库连接异常   java在Gridview上绘制文本   使用LWJGL时出现java安全错误   java字符数组列表   java无法从RTSP服务器获得任何答案   java如何将对象从servlet传递到JSP?   java如何通过编程设置imageView的高度?