slack的日志处理程序

logging-slackhandler的Python项目详细描述


Package VersionDevelopment StatusPython VersionLicenseBuild StatusSay Thanks!

导言

此模块为日志记录提供附加的处理程序、格式化程序和筛选器。 包,以便您可以将python日志记录发送到松弛的传入webhook。

学分

这个模块的灵感来自Junhwi Kimpython-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转换为十六进制颜色代码或松弛特殊代码(goodwarningdanger

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 创建SlackFilterTrue的参数:

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

兹免费准许任何人取得 本软件和相关文档文件(“软件”),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,在下列条件下:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件

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

推荐PyPI第三方库


热门话题
java游戏!框架伪造应用程序它实际上做什么?   java如何在JavaFx中显示表视图中的即时更改?   对象类的equals()方法的java重载   xpages介绍如何部署java。IBM Notes中的策略更改   java如何访问侦听器中的另一个视图?   java getDefaultDisplay()的替代方法是什么   java opencv匹配模板   java Android Firebase写入数据时的常量超时   在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。   带有GUI的swing Java模拟无法运行模拟   java NoSuchElementException在特定的Web端上使用无头铬和硒   java对文件进行迭代,即使文件在目录中也会出现“未找到文件”异常。你能告诉我为什么吗?谢谢   递归Java 8,匿名递归嵌套方法   java为什么我看到枚举常量的字段值会被序列化/反序列化?在哪种情况下,枚举中哪些内容没有序列化?   java在运行sonar scanner和Spotbugs规则时出错,用于单片项目?   java如何检查硬件键盘是否可用?(黑莓)   tile游戏动作侦听器循环中的java错误   sockets Java线程池与高请求场景中的新线程   java如何使用Hibernate注释在联接表上创建索引?