跳转到主要内容

通过API将日志事件发布到Slack

项目描述

https://img.shields.io/pypi/v/slacker_log_handler.svg?style=flat-square https://img.shields.io/pypi/wheel/slacker_log_handler.svg?style=flat-square https://img.shields.io/pypi/format/slacker_log_handler.svg?style=flat-square https://img.shields.io/pypi/pyversions/slacker_log_handler.svg?style=flat-square https://img.shields.io/pypi/status/slacker_log_handler.svg?style=flat-square

Python日志处理程序,将日志发布到Slack频道。使用https://slack.dev/python-slack-sdk通过Slack API发布。

创建初衷是为了用于内部项目,但已做了一些努力使其足够通用,以便任何Python项目都可以使用。

安装

pip install slackclient-log-handler

选项

api_token (必需)

https://api.slack.com/生成密钥

channel (必需)

设置要发布的频道,例如“#general”。

username

将发布到Slack的用户名。默认为“Python logger”。

icon_url

用于日志用户图标图像的URL

icon_emoji

用作图标的emoji。覆盖icon_url。如果未设置icon_url和icon_emoji,则使用:heavy_exclamation_mark:。

fail_silent

默认为False。如果您的API密钥无效或由于其他原因API调用返回错误,此选项将静默忽略API错误。如果您启用此设置,请确保您有另一个日志处理器,它也会处理相同的日志事件,否则它们可能会完全丢失。

Django配置

日志参考:https://docs.django.ac.cn/en/stable/topics/logging/

此示例将INFO和ERROR发送到Slack,并将错误发送到管理员电子邮件。

  • 在您的设置模块中设置SLACK_API_KEY

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'slack-error': {
            'level': 'ERROR',
            'api_token': SLACK_API_KEY,
            'class': 'slackclient_log_handler.SlackclientLogHandler',
            'channel': '#general'
        },
        'slack-info': {
            'level': 'INFO',
            'api_token': SLACK_API_KEY,
            'class': 'slackclient_log_handler.SlackclientLogHandler',
            'channel': '#general'
        },
        'loggers': {
            'django.request': {
                'handlers': ['mail_admins', 'slack-error', 'slack-info'],
                'level': 'ERROR',
                'propagate': True,
            },
        }
    }
}

示例Python日志处理器

这就是您如何将slackclient_log_handler用作常规Python日志处理器。此示例将错误消息发送到Slack频道。

import logging
from slackclient_log_handler import SlackclientLogHandler, NoStacktraceFormatter

# Create slack handler
slack_handler = SlackclientLogHandler('my-channel-token', 'my-channel-name')

# Create logger
logger = logging.getLogger('debug_application')
logger.addHandler(slack_handler)

# OPTIONAL: Define a log message formatter.
# If you have set stack_trace=True, any exception stack traces will be included as Slack message attachments.
# You therefore need to use NoStacktraceFormatter as a base to exclude the trace from the main message text.
formatter = NoStacktraceFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
slack_handler.setFormatter(formatter)

# Define the minimum level of log messages you want to send to Slack
slack_handler.setLevel(logging.DEBUG)

# Test logging
logger.error("Debug message from slack!")

Slack消息格式化

此示例使用一个子类,该子类将格式化消息发送到Slack频道。参考:https://api.slack.com/docs/message-formatting

class CustomLogHandler(SlackclientLogHandler):
    def build_msg(self, record):
        message = "> New message :\n" + record.getMessage()
        return message

许可协议

Apache 2.0

Slack-sdk也在MIT之下。

另请参阅:https://api.slack.com/terms-of-service

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

slackclient_log_handler-0.1.2.tar.gz (8.4 kB 查看散列)

上传时间:

构建分发

slackclient_log_handler-0.1.2-py3-none-any.whl (8.2 kB 查看散列)

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面