Posts log events to Slack via API
Project description
Python log handler that posts to a Slack channel. Posts to the Slack API using https://github.com/os/slacker.
For a different implementation using webhooks instead of Slacker, see https://github.com/claudetech/python-slack-log or read http://www.pythian.com/blog/logging-for-slackers/
Created with the intention of using for a Django project, but some effort has been made to make it generic enough that any Python project could use it.
Installation
pip install slacker-log-handler
Options
api_key (required)
Generate a key at https://api.slack.com/
channel (required)
Set which channel you want to post to, e.g. “#general”.
username
The username that will post to Slack. Defaults to “Python logger”.
icon_url
URL to an image to use as the icon for the logger user
icon_emoji
emoji to use as the icon. Overrides icon_url. If neither icon_url nor icon_emoji is set, :heavy_exclamation_mark: will be used.
Django configuration
Logging reference: https://docs.djangoproject.com/en/stable/topics/logging/
This example will send INFO and ERRORS to Slack, as well as errors to admin emails.
Set SLACK_API_KEY in your settings module.
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_key': SLACK_API_KEY,
'class': 'slacker_log_handler.SlackerLogHandler',
'channel': '#general'
},
'slack-info': {
'level': 'INFO',
'api_key': SLACK_API_KEY,
'class': 'slacker_log_handler.SlackerLogHandler',
'channel': '#general'
},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'slack-error', 'slack-info'],
'level': 'ERROR',
'propagate': True,
},
}
}
}
Example Python logging handler
This is how you use slacker_log_handler as a regular Python logging handler. This example will send a error message to a slack channel.
import logging
from slacker_log_handler import SlackerLogHandler
# Create slack handler
slack_handler = SlackerLogHandler('my-channel-token', 'my-channel-name')
# Create logger
logger = logging.getLogger('debug_application')
logger.addHandler(slack_handler)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Add the handler to logger
slack_handler.setFormatter(formatter)
slack_handler.setLevel(logging.DEBUG)
# Test logging
logger.error("Debug message from slack!")
Message formatting
This example use a subclass that will send a formatted message to a slack channel. Reference: https://api.slack.com/docs/message-formatting
class CustomLogHandler(SlackerLogHandler):
def build_msg(self, record):
message = "> New message :\n" + record.getMessage()
return message
License
Apache 2.0
Slacker is also under Apache 2.0.
See also: https://api.slack.com/terms-of-service
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for slacker_log_handler-1.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63d830bab9c1955c1f1f6adfa28af0d493b3332d0e8f5982bd8fad5a5a336a12 |
|
MD5 | 27a833287f614572f93309f542cb0a7d |
|
BLAKE2b-256 | 91576976def6a6eeb6ed072568d7194df8311eeccd44be5b42529d9ed8f92b0c |