Skip to main content

Slack Logger is a custom message logger to Slack for Python 3+

Project description

Python Slack Logger

A custom message logger to Slack for Python 3+. This project was built using slackclient and the latest Block Kit UI.

This is the Slack alternative to discord-logger package for Discord.

PyPI - Python Version PyPI version Downloads PyPI - Wheel License: MIT Code style: black

Install

Install via pip: pip install python-slack-logger

Basic Usage

from slack_logger import SlackLogger

token = "your slack app token"
options = {
    "service_name": "Backend API",
    "service_environment": "Production",
    "default_level": "info",
}

logger = SlackLogger(token=token, **options)

channel = "#my_channel"
response = logger.send(
    channel=channel,
    title="Health Check",
    description="All services are running normally!",
)

Image

Configure various options

There are numerous configurations available to customise the message.

options = {
    # Service name would be the name of the service sending the message to your Slack channel
    # This would usually be the name of the application sending the notification
    # If unset, the default value would be "Service"
    "service_name": "Backend API",

    # Usually services would run in staging and production environments
    # This field is to specify the environment from which the application is reponding for easy identification
    # If unset, this block would not appear in the message
    "service_environment": "Production",

    # The default importance level of the message
    # The left bar color of the message would change depending on this
    # Available options are
    # - default: #1F2225
    # - error: #DB2828
    # - warn: #FBBD08
    # - info: #2185D0
    # - verbose: #6417C9
    # - debug: #2185D0
    # - success: #21BA45
    # If the `error` field is set during the construction of the message, the `level` is automatically set to `error`
    # If nothing is specified, `default` color would be used
    "default_level": "info",
}

Examples

Set Service Name and Environment for easy identification

You can configure the log message with service name and environment for easy identification. The Host field which is the hostname of the server is automatically added for every message.

You can even send any meta information like the data in the variables, module names, metrics etc with the metadata field while constructing the message. These data should be passed as a dictionary.

from slack_logger import SlackLogger

token = "your slack app token"
options = {
    "service_name": "Backend API",
    "service_environment": "Production",
    "default_level": "info",
}

logger = SlackLogger(token=token, **options)

channel = "#my_channel"
response = logger.send(
    channel=channel,
    title="Health Check",
    description="Issue in establishing DB connections!",
    error="Traceback (most recent call last):\n ValueError: Database connect accepts only string as a parameter!",
    metadata={"module": "DBConnector", "host": 123.332},
)

Image

Send messages with different log-levels

The log-level indicates the importance of the message. It changes the color of the Slack message in particular. Currently supported levels are,

  • error
  • warn
  • info
  • verbose
  • debug
  • success

The log-level can be set during construction of the message like through the parameter level.

If the parameter isn't provided, it'll be set to the one given in default_level. Any invalid input would be ignored and the log-level would be automatically be set to default.

Any complicated nested dictionary can be passed to the metadata field and the message gets forrmatted accordingly for easy reading.

from slack_logger import SlackLogger

token = "your slack app token"
options = {
    "service_name": "Backend API",
    "service_environment": "Production",
    "default_level": "info",
}

logger = SlackLogger(token=token, **options)

channel = "#my_channel"
response = logger.send(
    channel=channel,
    title="Celery Task Manager",
    description="Successfully completed training job for model v1.3.3!",
    level="success",
    metadata={
        "Metrics": {
            "Accuracy": 78.9,
            "Inference time": "0.8 sec",
            "Model size": "32 MB",
        },
        "Deployment status": "progress",
    },
)

Image

Send complete error traceback

The error field can contain any error message. It will be automatically be formatted in the final message. For example, you can send a complete traceback of an error message to debug faster!

import traceback

from slack_logger import SlackLogger


def get_traceback(e):
    tb = (
        "Traceback (most recent call last):\n"
        + "".join(traceback.format_list(traceback.extract_tb(e.__traceback__)))
        + type(e).__name__
        + ": "
        + str(e)
    )
    return tb


token = "your slack app token"
options = {
    "service_name": "Backend API",
    "service_environment": "Production",
    "default_level": "info",
}

err = KeyError("'email' field cannot be None")

logger = SlackLogger(token=token, **options)

channel = "#my_channel"
response = logger.send(
    channel=channel,
    title="Runtime Exception",
    description=err.__str__(),
    error=get_traceback(err),
    metadata={"email": None, "module": "auth", "method": "POST"},
)

Image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-slack-logger-0.9.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_slack_logger-0.9.2-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file python-slack-logger-0.9.2.tar.gz.

File metadata

  • Download URL: python-slack-logger-0.9.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for python-slack-logger-0.9.2.tar.gz
Algorithm Hash digest
SHA256 e726b2c31e6529a16d60178233cc844cd9dcbd890a7908341d95eef45e3824ac
MD5 1bc4e825f1da084855ab887b1c80065c
BLAKE2b-256 855f3820e9f75d95c1c920e1eedadd439b84a50c888e5fa683c2fc1104975e32

See more details on using hashes here.

File details

Details for the file python_slack_logger-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: python_slack_logger-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for python_slack_logger-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2460a5651318da46f35af70e6bd6ee75745f67d8cab4336fb35102562f98e481
MD5 f1ab48d6467a317d8ebf8e26a0d54b39
BLAKE2b-256 7a098890e764d68bc18a78598382637b019f6fdf9f6ee549fc12c0aea19beedd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page