DEV Community

Cover image for Sending Laravel Logs to Mattermost Channels
Muhammad Hassan
Muhammad Hassan

Posted on

Sending Laravel Logs to Mattermost Channels

Mattermost is an open-source platform for communication and collaboration with integrations with many tools. It is mostly considered as an open-source alternative to Slack and Microsoft Teams.

Although Laravel does not have an official log channel driver for Mattermost, we can build a custom Monolog handler that can be easily configured in Laravel apps.

I have created a small package for this purpose that, unlike the existing Mattermost handlers, format the message according to Mattermost docs

Installation

$ composer require muhamadhhassan/laramost
Enter fullscreen mode Exit fullscreen mode

Configuration

In your config/logging.php file, add the mattermost channel to the channels array:

use LaraMost\Formatter\MattermostFormatter;
use LaraMost\Handler\MattermostWebhookHandler;

'channels' => [
    'mattermost' => [
        'driver'  => 'monolog',
        'handler' => MattermostWebhookHandler::class,
        'formatter' => MattermostFormatter::class,
        'with' => [
            'hook' => 'https://your-mattermost.com/hooks/random-string',
        ],
        'level' => 'error'
    ],
],
Enter fullscreen mode Exit fullscreen mode

You can follow the steps here to create an incoming webhook for your channel.

Levels

Monolog levels are used to set the message color and icon

Level Name Level Value Color Emoji
DEBUG 100 #91C4EB 🔍
INFO 200 #91C4EB
NOTICE 250 #99cc33 📝
WARNING 300 #ffcc00
ERROR 400 #cc3300 🐛
CRITICAL 500 #cc3300
EMERGENCY 600 #cc3300 🚨

Usage

Simply, using Laravel Log facade

Log::channel('mattermost')->error('Something went wrong', ['user_id' => 5]);
Enter fullscreen mode Exit fullscreen mode

Will send the following message to your mattermost channel:

Image description

Warning: When you log to the mattermost channel make sure that the level is greater than or equals the one defined in config/logging.php

And there you have it! A simple implementation to send log records to a Mattermost channel.

Top comments (0)