Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Lern Laravel Package

tylercd100/lern

View on GitHub
Deep Wiki
Context7

Getting Started

Install via Composer:

composer require monolog/monolog

For Laravel integration, ensure compatibility with Laravel 7/8 and PHP 7.3+. Register the package in config/logging.php under the channels array (e.g., single, slack, or sentry). Example for Slack:

'slack' => [
    'driver' => 'slack',
    'url' => env('LOG_SLACK_WEBHOOK_URL'),
    'username' => 'Laravel Log',
    'emoji' => ':rocket:',
],

First use case: Replace Log::error() with Monolog’s Logger instance for granular log handling:

$logger = app('log')->driver('slack');
$logger->error('Critical failure', ['trace' => $e]);

Implementation Patterns

Core Workflows

  1. Channel-Specific Logging: Route logs to multiple channels (e.g., slack for alerts, single for files):
    Log::channel('slack')->warning('Deploy started', ['user' => auth()->user()]);
    
  2. Contextual Data: Attach structured metadata to logs:
    Log::info('User action', ['user_id' => 123, 'action' => 'profile_update']);
    
  3. Middleware Integration: Use Monolog’s Processor to enrich logs (e.g., add request IDs):
    $processor = new \Monolog\Processor\UidProcessor();
    $logger->pushProcessor($processor);
    

Laravel-Specific Tips

  • Dynamic Channels: Use Log::build() to create ad-hoc loggers:
    $logger = Log::build([
        'driver' => 'custom',
        'path' => storage_path('logs/custom.log'),
    ]);
    
  • Queue Logs: Offload logs to a queue (e.g., async channel) for performance:
    'async' => [
        'driver' => 'async',
        'queue' => 'logs',
    ],
    

Gotchas and Tips

Breaking Changes (6.0.0)

  1. Deprecated Handlers Removed:

    • Raven: Replace Monolog\Handler\RavenHandler with Sentry\Monolog\Handler (v3.x).
      // Old (deprecated)
      $handler = new \Monolog\Handler\RavenHandler($client);
      
      // New
      $handler = new \Sentry\Monolog\Handler($client);
      
    • HipChat: Migrate to Slack using SlackWebhookHandler or SlackHandler.
      $handler = new \Monolog\Handler\SlackWebhookHandler($webhookUrl, $username);
      
  2. Laravel/PHP Version Drop:

    • Unsupported: Laravel 5.x and PHP 7.0/7.1. Update dependencies if using older stacks.

Debugging

  • Handler Priorities: Ensure handlers are ordered correctly (e.g., StreamHandler before SlackHandler to avoid duplicate logs).
  • Log Rotation: Configure Monolog\Handler\RotatingFileHandler for file-based logs:
    'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'maxFiles' => 5, // Rotate after 5 files
    ],
    

Extension Points

  • Custom Handlers: Extend Monolog\Handler\AbstractProcessingHandler for bespoke integrations (e.g., Datadog, PagerDuty).
  • Log Levels: Use Monolog’s levels (DEBUG, INFO, WARNING, etc.) instead of Laravel’s Log::debug() for consistency:
    $logger->debug('Debug message', ['context' => 'value']);
    
  • Stacking Handlers: Combine handlers (e.g., log to file and Slack):
    $logger->pushHandler(new \Monolog\Handler\StreamHandler(storage_path('logs/app.log')));
    $logger->pushHandler(new \Monolog\Handler\SlackWebhookHandler($webhookUrl));
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity