expdev07/laravel-logsnag

Get a realtime feed of your Laravel project’s most important events using Logsnag

Fund package maintenance!
Ko Fi

v1.1.0 2023-08-17 21:37 UTC

This package is auto-updated.

Last update: 2024-10-18 00:13:28 UTC


README

Latest Version on Packagist Total Downloads

Get a realtime feed of your Laravel project’s most important events using Logsnag. Supports push notifications straight to your phone.

Get notified:

  1. In the Logsnag dashboard.
  2. On your desktop/laptop (windows + macOS).
  3. On your phone (android + iOS).

Support me

I create Open Source software in my spare time. If you wish to support me, consider buying me a coffee :).

Buy Me a Coffee at ko-fi.com

Beta

Logsnag is currently in beta mode, and you must join the waitlist in order to use it. However, they accept people fairly quickly. Join on their website here: https://logsnag.com/.

Requirements

  • PHP 8+
  • Laravel 9

Installation

You can install the package via composer:

composer require expdev07/laravel-logsnag

You can publish the config file with:

php artisan vendor:publish --tag="logsnag-config"

This is the contents of the published config file:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Logsnag.
    |--------------------------------------------------------------------------
    |
    | Configure the Logsnag options.
    |
    */

    /**
     * The project name.
     */
    'project' => env('LOGSNAG_PROJECT', 'laravel'),

    /**
     * The API token.
     */
    'token' => env('LOGSNAG_TOKEN', ''),

    /**
     * A mapping of icons for logging.
     */
    'icons' => [
        'DEBUG'     => 'ℹ️',
        'INFO'      => 'ℹ️',
        'NOTICE'    => '📌',
        'WARNING'   => '⚠️',
        'ERROR'     => '⚠️',
        'CRITICAL'  => '🔥',
        'ALERT'     => '🔔️',
        'EMERGENCY' => '💀',
    ],

];

Add the Logsnag channel to your logging config:

'channels' => [
    //...
    'logsnag' => [
        'driver'  => 'custom',
        'via'     => ExpDev07\Logsnag\Logger\LogsnagLogger::class,
        'level'   => 'debug',
        'project' => 'my-project',
        'channel' => 'my-channel',
        'notify'  => true,         
    ],
];

Usage

Using logger:

use Illuminate\Support\Facades\Log;
 
Log::channel('logsnag')->emergency('There is an emergency! Please fix ASAP.');

Using facade:

use ExpDev07\Logsnag\Facades\Logsnag;
 
Logsnag::log('my-channel', 
    event: 'New subscriber!', 
    description: 'Someone just subscribed to MySaaS Pro at $9.99', 
    icon: '🤑', 
    notify: true,
);

Using client:

use ExpDev07\Logsnag\Client\LogsnagClient;

app(LogsnagClient::class)->log(new LogsnagRequest(
    project: 'project-name',
    channel: 'channel',
    event: 'Test event',
    description: 'This is a description for test event',
    icon: '😊',
    notify: true,
));

Parameters

  • project: The logsnag project name.
  • channel: The channel to log in. Must be lowercase and hyphenated.
  • event: The event name.
  • description: The event description.
  • icon: Associate the log with an icon (emoji).
  • notify: Whether to send push notifications to devices.

See Logsnag Log route for more information.

Screenshots

A log about a new subscriber in the Logsnag dashboard.

Dashboard Notification 1

A log about an app emergency in the Logsnag dashboard.

Dashboard Notification 2

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.