slack的日志处理程序
logging-slackhandler的Python项目详细描述
导言
此模块为日志记录提供附加的处理程序、格式化程序和筛选器。 包,以便您可以将python日志记录发送到松弛的传入webhook。
学分
这个模块的灵感来自Junhwi Kim 在python-slack-logger上工作。
工作原理
为了在不减慢代码运行速度的情况下将记录发送到slack,消息是 由线程池在后台发布,同时将新记录添加到 排队。
如果网络延迟或断开连接,则在未被阻止的情况下执行应用程序 等待回复
安装
您可以使用pip安装、升级或卸载日志slackhandler:
pip install logging-slackhandler pip install --upgrade logging-slackhandler pip uninstall logging-slackhandler
用法
懒汉
SlackHandler实例分派日志事件以松弛传入的webhook。
下面是它的参数列表:
webhook_url: Slack Incoming Webhook URL. username: (optional) message sender username. channel: (optional) Slack channel to post to. icon_emoji: (optional) customize emoji for message sender. timeout: (optional) specifies a timeout in seconds for blocking operations. pool_size: (optional) specifies number of workers processing records queue.
下面的示例演示如何将记录发送到松弛的传入webhook:
importloggingfromSlackLoggerimportSlackHandlerlogger=logging.getLogger(__name__)logger.setLevel(logging.DEBUG)slack_handler=SlackHandler('YOUR_WEBHOOK_URL')logger.addHandler(slack_handler)forlevelin['debug','info','warning','error','critical']:getattr(logger,level)('This is a `%s` message',level)
松弛格式化器
SlackFormatter实例格式化日志记录并返回可以 作为松弛邮件附件发送。
下面是它的参数列表:
attr: (optional) custom attachment parameters to record attributes dictionary. lvl_color: (optional) custom record levels to colors dictionary.
您可以使用attr参数自定义Slack消息的外观,以绑定 Slack attachment property 记录属性消息中将不显示空字符串。
另外,lvl_color参数允许您自定义颜色编码消息,绑定记录 levelname转换为十六进制颜色代码或松弛特殊代码(good,warning,danger)
fromSlackLoggerimportSlackFormatterattr={'pretext':'*Look at me!*','title':''}lvl_color={'INFO':'good'}slack_handler.setFormatter(SlackFormatter(attr=attr,lvl_color=lvl_color))logger.info('Hi there!')
缓滤器
SlackFilter实例可用于确定指定的记录是否 被发送到松弛传入的Webhook。
下面是它的参数列表:
allow: filtering rule for log record.
您可以使用SlackFilter只允许发送一些记录。什么时候? SlackFilter已定义,除非您 通过添加extra参数显式地请求它,如下例所示:
fromSlackLoggerimportSlackFilterlogger.addFilter(SlackFilter())logger.debug('This is a debug message')logger.info('Hi there!',extra={'slack':True})
要有相反的行为(默认情况下是发送记录),只需设置allow 创建SlackFilter时True的参数:
fromSlackLoggerimportSlackFilterlogger.addFilter(SlackFilter(allow=True))logger.debug('This is a debug message',extra={'slack':False})logger.info('Hi there!')
很高兴知道
消息顺序
消息是按队列中的fifo顺序处理的,但由于网络的原因 延迟、延迟响应时间或消息长度,可能出现并发消息 在目的地频道中的顺序与您发送的顺序不同。
如果需要消息顺序,可以使用池大小定义slackhandler 只有一个线程将处理队列:
slack_handler=SlackHandler('YOUR_WEBHOOK_URL',pool_size=1)
许可证
版权所有(c)2017 Damien Le Bourdonnec
兹免费准许任何人取得 本软件和相关文档文件(“软件”),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,在下列条件下:
上述版权公告及本许可公告须包括在 软件的拷贝或大部分。
本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件