Sending Laravel Logs to Mattermost Channels

Sending Laravel Logs to Mattermost Channels

ยท

2 min read

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

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'
    ],
],

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 NameLevel ValueColorEmoji
DEBUG100#91C4EB๐Ÿ”
INFO200#91C4EBโ„น
NOTICE250#99cc33๐Ÿ“
WARNING300#ffcc00โš 
ERROR400#cc3300๐Ÿ›
CRITICAL500#cc3300โŒ
EMERGENCY600#cc3300๐Ÿšจ

Usage

Simply, using Laravel Log facade

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

Will send the following message to your mattermost channel:

Screenshot 2022-09-23 172832.png

โš  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.

ย