PHPackages                             naoray/laravel-github-monolog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. naoray/laravel-github-monolog

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

naoray/laravel-github-monolog
=============================

Log driver to store logs as github issues

v3.8.0(3mo ago)10619.4k↑10.9%6MITPHPPHP ^8.3CI passing

Since Jan 10Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/Naoray/laravel-github-monolog)[ Packagist](https://packagist.org/packages/naoray/laravel-github-monolog)[ Docs](https://github.com/naoray/laravel-github-monolog)[ GitHub Sponsors](https://github.com/naoray)[ RSS](/packages/naoray-laravel-github-monolog/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (17)Versions (43)Used By (0)

Laravel GitHub Issue Logger
===========================

[](#laravel-github-issue-logger)

[![Latest Version on Packagist](https://camo.githubusercontent.com/416104986ebe3a486f4404bb30c5ad9799376fe1b4b97d94aa2f47bd642c86b7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e616f7261792f6c61726176656c2d6769746875622d6d6f6e6f6c6f672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/naoray/laravel-github-monolog)[![GitHub Tests Action Status](https://camo.githubusercontent.com/605f38e343ead6e6de796502f2d505c74ea643df96d354d3a4c0dc546df670e6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6e616f7261792f6c61726176656c2d6769746875622d6d6f6e6f6c6f672f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/naoray/laravel-github-monolog/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/36d2fa00f547b68b7c0448a41be2771a61167cb44bdb373f4e91e604b5ddc40b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6e616f7261792f6c61726176656c2d6769746875622d6d6f6e6f6c6f672f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/naoray/laravel-github-monolog/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/5a54c7a5e9c490c8318e9018511648cf92a0ddf3b453f7ebca6e84d6ae252c8e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6e616f7261792f6c61726176656c2d6769746875622d6d6f6e6f6c6f672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/naoray/laravel-github-monolog)

Automatically create GitHub issues from your Laravel exceptions &amp; logs. Perfect for smaller projects without the need for full-featured logging services.

Requirements
------------

[](#requirements)

- PHP ^8.3
- Laravel ^11.37|^12.0
- Monolog ^3.6

Features
--------

[](#features)

- ✨ Automatically create GitHub issues from Exceptions &amp; Logs
- 🔍 Group similar errors into single issues
- 💬 Add comments to existing issues for recurring errors
- 🏷️ Support customizable labels
- 🎯 Smart deduplication to prevent issue spam
- ⚡️ Buffered logging for better performance
- 📝 Customizable issue templates
- 🕵🏻‍♂️ Tracing Support (Request &amp; User)

Showcase
--------

[](#showcase)

When an error occurs in your application, a GitHub issue is automatically created with comprehensive error information and stack trace:

[![issue raised](https://private-user-images.githubusercontent.com/10154100/402150512-bd1a7e9b-e1f3-43ed-b779-14fbaa974916.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNTA1MTItYmQxYTdlOWItZTFmMy00M2VkLWI3NzktMTRmYmFhOTc0OTE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjMWExNzVkNjJhNGRkMDU1OWJhYTAzZGFkOGE3NDhhMTY3NDcyYTYwYWQ1OTQxNjIxOGU0YzBmMjU4YmY0NTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.waIpFRCr4IQwe6dZpIyRjENAZujQQWgpt-PxshixVqY)](https://private-user-images.githubusercontent.com/10154100/402150512-bd1a7e9b-e1f3-43ed-b779-14fbaa974916.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNTA1MTItYmQxYTdlOWItZTFmMy00M2VkLWI3NzktMTRmYmFhOTc0OTE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjMWExNzVkNjJhNGRkMDU1OWJhYTAzZGFkOGE3NDhhMTY3NDcyYTYwYWQ1OTQxNjIxOGU0YzBmMjU4YmY0NTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.waIpFRCr4IQwe6dZpIyRjENAZujQQWgpt-PxshixVqY)The issue appears in your repository with all the detailed information about the error:

[![issue detail](https://private-user-images.githubusercontent.com/10154100/402146955-0fe6e6d7-8ecd-4253-8c05-e8ba2025a536.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNDY5NTUtMGZlNmU2ZDctOGVjZC00MjUzLThjMDUtZThiYTIwMjVhNTM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwNDk2YmRiYTI0ZTcxZWMzZjM2NmFiZTAyYjAyYTg4YjhlMDVkOTBkYmQyMWIwYzE0NGMzOGVlNmQyMGIxOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x3sv-1qDX4b_IMy36gEXWeBkukNBgTEYX756XL154BQ)](https://private-user-images.githubusercontent.com/10154100/402146955-0fe6e6d7-8ecd-4253-8c05-e8ba2025a536.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNDY5NTUtMGZlNmU2ZDctOGVjZC00MjUzLThjMDUtZThiYTIwMjVhNTM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwNDk2YmRiYTI0ZTcxZWMzZjM2NmFiZTAyYjAyYTg4YjhlMDVkOTBkYmQyMWIwYzE0NGMzOGVlNmQyMGIxOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x3sv-1qDX4b_IMy36gEXWeBkukNBgTEYX756XL154BQ)If the same error occurs again, instead of creating a duplicate, a new comment is automatically added to track the occurrence:

[![comment added](https://private-user-images.githubusercontent.com/10154100/402147384-c76fd583-63a9-49b8-a7fb-a6dcf2c00ee6.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNDczODQtYzc2ZmQ1ODMtNjNhOS00OWI4LWE3ZmItYTZkY2YyYzAwZWU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU1YmUxMWUwNmUxNjBmYTVlMGM2MTYwNjk2NmNjODkwOGZiMGIxZTY2MGM0NTg4YTM5M2RjMzQ4NDQ0NGU4MzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zqBth920R09AOekrXhaS4Mu1dkEaR6SxRTyEeoBdTmQ)](https://private-user-images.githubusercontent.com/10154100/402147384-c76fd583-63a9-49b8-a7fb-a6dcf2c00ee6.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUzMzMxNDIsIm5iZiI6MTc3NTMzMjg0MiwicGF0aCI6Ii8xMDE1NDEwMC80MDIxNDczODQtYzc2ZmQ1ODMtNjNhOS00OWI4LWE3ZmItYTZkY2YyYzAwZWU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA0VDIwMDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU1YmUxMWUwNmUxNjBmYTVlMGM2MTYwNjk2NmNjODkwOGZiMGIxZTY2MGM0NTg4YTM5M2RjMzQ4NDQ0NGU4MzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zqBth920R09AOekrXhaS4Mu1dkEaR6SxRTyEeoBdTmQ)Installation
------------

[](#installation)

Install with Composer:

```
composer require naoray/laravel-github-monolog
```

Configuration
-------------

[](#configuration)

Add the GitHub logging channel to `config/logging.php`:

```
'channels' => [
    // ... other channels ...

    'github' => [
        // Required configuration
        'driver' => 'custom',
        'via' => \Naoray\LaravelGithubMonolog\GithubIssueHandlerFactory::class,
        'repo' => env('GITHUB_REPO'),    // Format: "username/repository"
        'token' => env('GITHUB_TOKEN'),  // Your GitHub Personal Access Token

        // Optional configuration
        'level' => env('LOG_LEVEL', 'error'),
        'labels' => ['bug'],
    ],
]
```

Add these variables to your `.env` file:

```
GITHUB_REPO=username/repository
GITHUB_TOKEN=your-github-personal-access-token

```

You can use the `github` log channel as your default `LOG_CHANNEL` or add it as part of your stack in `LOG_STACK`.

### Getting a GitHub Token

[](#getting-a-github-token)

To obtain a Personal Access Token:

1. Go to [Generate a new token](https://github.com/settings/tokens/new?description=Laravel%20GitHub%20Issue%20Logger&scopes=repo) (this link pre-selects the required scopes)
2. Review the pre-selected scopes (the `repo` scope should be checked)
3. Click "Generate token"
4. Copy the token immediately (you won't be able to access it again after leaving the page)
5. Add it to your `.env` file as `GITHUB_TOKEN`

> **Note**: The token requires the `repo` scope to create issues in both public and private repositories.

Usage
-----

[](#usage)

Whenever an exception is thrown it will be logged as an issue to your repository.

You can also use it like any other Laravel logging channel:

```
// Single channel
Log::channel('github')->error('Something went wrong!');

// Or as part of a stack
Log::stack(['daily', 'github'])->error('Something went wrong!');
```

Advanced Configuration
----------------------

[](#advanced-configuration)

### Customizing Templates

[](#customizing-templates)

The package uses Markdown templates to format issues and comments. You can customize these templates by publishing them:

```
php artisan vendor:publish --tag="github-monolog-views"
```

This will copy the templates to `resources/views/vendor/github-monolog/` where you can modify them:

- `issue.md`: Template for new issues
- `comment.md`: Template for comments on existing issues
- `previous_exception.md`: Template for previous exceptions in the chain

> **Important**:
>
> - The templates use HTML comments as section markers (e.g. `` and ``). These markers are used to intelligently remove empty sections from the rendered output. Please keep these markers intact when customizing the templates.
> - If you've previously published and customized templates, you may need to republish them to get the latest structure with triage headers and collapsible sections. Compare your custom templates with the new defaults and migrate any customizations.

Available template variables:

- `{level}`: Log level (error, warning, etc.)
- `{message}`: The error message or log content
- `{class}`: Exception class name
- `{signature}`: Internal signature used for deduplication
- `{timestamp}`: Timestamp when the error occurred (format: Y-m-d H:i:s)
- `{environment_name}`: Environment name (e.g., production, staging) from APP\_ENV
- `{route_summary}`: HTTP method and path (e.g., "GET /api/users")
- `{user_summary}`: User ID or "Unauthenticated"
- `{simplified_stack_trace}`: A cleaned up stack trace
- `{full_stack_trace}`: The complete stack trace
- `{previous_exceptions}`: Details of any previous exceptions
- `{environment}`: Full environment data (JSON)
- `{request}`: Full request data (JSON)
- `{route}`: Full route data (JSON)
- `{user}`: Full user data (JSON)
- `{queries}`: Recent database queries
- `{job}`: Job context data (JSON)
- `{command}`: Command context data (JSON)
- `{outgoing_requests}`: Outgoing HTTP requests
- `{session}`: Session data (JSON)
- `{context}`: Additional context data (JSON)
- `{extra}`: Extra log data (JSON)

### Deduplication

[](#deduplication)

Group similar errors to avoid duplicate issues. The package uses Laravel's cache system for deduplication storage.

```
'github' => [
    // ... basic config from above ...
    'deduplication' => [
        'time' => 60,        // Time window in seconds - how long to wait before creating a new issue
        'store' => null,     // Uses your default cache store (from cache.default)
        'prefix' => 'dedup', // Prefix for cache keys
    ],
]
```

For cache store configuration, refer to the [Laravel Cache documentation](https://laravel.com/docs/cache).

### Buffering

[](#buffering)

Buffer logs to reduce GitHub API calls. Customize the buffer size and overflow behavior to optimize performance:

```
'github' => [
    // ... basic config from above ...
    'buffer' => [
        'limit' => 0,        // Maximum records in buffer (0 = unlimited, flush on shutdown)
        'flush_on_overflow' => true,  // When limit is reached: true = flush all, false = remove oldest
    ],
]
```

When buffering is active:

- Logs are collected in memory until flushed
- Buffer is automatically flushed on application shutdown
- When limit is reached:
    - With `flush_on_overflow = true`: All records are flushed
    - With `flush_on_overflow = false`: Only the oldest record is removed

### Tracing

[](#tracing)

> **Note:** Tracing is opt-in and disabled by default. To enable tracing capabilities, you must add the `tracing` configuration to your `config/logging.php` file under the `github` channel configuration.

The package includes optional tracing capabilities that allow you to track requests, user data, queries, and more in your logs. Enable this feature through your configuration:

```
'tracing' => [
    'enabled' => true,           // Master switch for all tracing
    'requests' => true,          // Enable request tracing
    'route' => true,            // Enable route tracing
    'user' => true,             // Enable user tracing
    'queries' => [               // Database query tracing
        'enabled' => true,
        'limit' => 10,           // Maximum number of queries to track
    ],
    'jobs' => true,             // Enable job context tracing
    'commands' => true,         // Enable command context tracing
    'outgoing_requests' => [    // Outgoing HTTP request tracing
        'enabled' => true,
        'limit' => 5,           // Maximum number of outgoing requests to track
    ],
    'environment' => true,      // Enable environment data collection
    'session' => true,          // Enable session data collection
    'redact' => [               // Data redaction configuration
        'headers' => [],        // Additional headers to redact (beyond defaults)
        'payload_fields' => [], // Additional payload fields to redact (beyond defaults)
        'query_bindings' => false, // Whether to redact query bindings
    ],
]
```

#### Request Tracing

[](#request-tracing)

When request tracing is enabled, the following data is automatically logged:

- URL
- HTTP Method
- Route information
- Headers (filtered to remove sensitive data)
- Request body

#### Route Tracing

[](#route-tracing)

When route tracing is enabled, the following route information is logged:

- Route name
- URI pattern
- Route parameters
- Controller action
- Middleware stack
- HTTP methods

#### User Tracing

[](#user-tracing)

By default, user tracing only logs the user identifier to comply with GDPR regulations. However, you can customize the user data being logged by setting your own resolver:

```
use Naoray\LaravelGithubMonolog\Tracing\UserDataCollector;

UserDataCollector::setUserDataResolver(function ($user) {
    return [
        'username' => $user->username,
        // Add any other user fields you want to log
    ];
});
```

> **Note:** When customizing user data collection, ensure you comply with relevant privacy regulations and only collect necessary information.

#### Query Tracing

[](#query-tracing)

When query tracing is enabled, recent database queries are logged with:

- SQL statement
- Query bindings (can be redacted)
- Execution time
- Connection name

You can limit the number of queries tracked using the `limit` configuration option.

#### Job Tracing

[](#job-tracing)

When job tracing is enabled, queue job context is logged including:

- Job name and class
- Queue name
- Connection name
- Attempt number
- Job payload (sensitive data is redacted)

#### Command Tracing

[](#command-tracing)

When command tracing is enabled, artisan command context is logged including:

- Command name
- Command arguments
- Command options (sensitive data is redacted)

#### Outgoing Request Tracing

[](#outgoing-request-tracing)

When outgoing request tracing is enabled, HTTP requests made by your application are logged with:

- Request URL and method
- Response status code
- Request duration
- Request headers

You can limit the number of outgoing requests tracked using the `limit` configuration option.

#### Environment Tracing

[](#environment-tracing)

When environment tracing is enabled, application environment data is collected including:

- App environment and debug mode
- Laravel and PHP versions
- Hostname
- Git commit (if configured)

#### Session Tracing

[](#session-tracing)

When session tracing is enabled, session data is logged including:

- Session data (sensitive fields are redacted)
- Flash data (old and new)

#### Data Redaction

[](#data-redaction)

The package automatically redacts sensitive data from headers, payloads, and query bindings. You can customize what gets redacted:

- `headers`: Additional header names to redact beyond the default sensitive headers
- `payload_fields`: Additional payload field names to redact beyond the default sensitive fields
- `query_bindings`: Set to `true` to redact all query bindings (default: `false`)

### Signature Generator

[](#signature-generator)

Control how errors are grouped by customizing the signature generator. By default, the package uses a generator that creates signatures based on exception details or log message content.

```
'github' => [
    // ... basic config from above ...
    'signature_generator' => \Naoray\LaravelGithubMonolog\Deduplication\DefaultSignatureGenerator::class,
]
```

You can implement your own signature generator by implementing the `SignatureGeneratorInterface`:

```
use Monolog\LogRecord;
use Naoray\LaravelGithubMonolog\Deduplication\SignatureGeneratorInterface;

class CustomSignatureGenerator implements SignatureGeneratorInterface
{
    public function generate(LogRecord $record): string
    {
        // Your custom logic to generate a signature
        return md5($record->message);
    }
}
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Krishan Koenig](https://github.com/Naoray)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

56

—

FairBetter than 98% of packages

Maintenance86

Actively maintained with recent releases

Popularity42

Moderate usage in the ecosystem

Community14

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 92.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~7 days

Total

20

Last Release

99d ago

Major Versions

v1.1.0 → v2.0.02025-01-12

v2.1.1 → v3.x-dev2025-02-28

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10154100?v=4)[Krishan König](/maintainers/Naoray)[@Naoray](https://github.com/Naoray)

---

Top Contributors

[![Naoray](https://avatars.githubusercontent.com/u/10154100?v=4)](https://github.com/Naoray "Naoray (177 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (9 commits)")[![andrey-helldar](https://avatars.githubusercontent.com/u/10347617?v=4)](https://github.com/andrey-helldar "andrey-helldar (3 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")

---

Tags

github-issuelaravelloggingmonologlaravellogginggithubmonologKrishan Koenig

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/naoray-laravel-github-monolog/health.svg)

```
[![Health](https://phpackages.com/badges/naoray-laravel-github-monolog/health.svg)](https://phpackages.com/packages/naoray-laravel-github-monolog)
```

###  Alternatives

[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[shaffe/laravel-mail-log-channel

A package to support logging via email in Laravel

1286.2k](/packages/shaffe-laravel-mail-log-channel)[yzen.dev/mono-processor

This Processor will display in the logs bread crumbs by which you can more quickly and accurately identify the cause of the error.

116.1k](/packages/yzendev-mono-processor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
