Table of contents
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 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]);
Will send the following message to your mattermost channel:
โ Warning: When you log to the
mattermost
channel make sure that the level is greater than or equals the one defined inconfig/logging.php
And there you have it! A simple implementation to send log records to a Mattermost channel.