通过API将日志事件发布到Slack
项目描述
Python日志处理程序,将日志发布到Slack频道。使用https://slack.dev/python-slack-sdk通过Slack API发布。
创建初衷是为了用于内部项目,但已做了一些努力使其足够通用,以便任何Python项目都可以使用。
安装
pip install slackclient-log-handler
选项
api_token (必需)
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之下。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
slackclient_log_handler-0.1.2.tar.gz (8.4 kB 查看散列)
构建分发
关闭
slackclient_log_handler-0.1.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 72b8fa1f64992e43b5bfe2d60ce1b6b232f41d54232dd5df104b605abea6ad4a |
|
MD5 | a8c52a8945d12994eed155fb2d8b4a52 |
|
BLAKE2b-256 | b8401f12bb28bdfc726cb8af283f7d51c029ff60ff8265b1b17763099db8d9eb |
关闭
slackclient_log_handler-0.1.2-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | e464d40e3c7d95956cee23234e0ee2bd9b30b7fd94f45221564402fc1e5cd3a7 |
|
MD5 | 33446875ce144d503e9b3e1515273904 |
|
BLAKE2b-256 | aafbca8f3a454da63cbd2ae8d33c91aba44fef4ffd08d0c3430117c9ede7025c |