Laravel Scenario Logger
This Package helps you in laravel application to log all desired activity for each request from request entry point to generate response at a single snapshot.
Table of Contents
Installation
- run composer command
composer require escherchia/laravel-scenario-logger
- In order to handle logging on exceptions add this lines of code to Your default exception handler(usually
App\Exception\Handler
):
use Escherchia\LaravelScenarioLogger\Logger\ScenarioLogger;
public function register()
{
$this->reportable(function (Throwable $e) {
ScenarioLogger::logForService('log_exception', $e);
ScenarioLogger::finish();
});
}
...
- run publish command on your shell if your want to access package configuration file in your application:
php artisan vendor:publish
- run migrations to ensure you have proper tables in database :
php artisan migrate
please select LaravelScenarioLoggerServiceProvider
in order to publish package providers
Usage
After proper installation of this package into your application, all request will be logged using default storage driver which is database
built-in storage driver. Default storage driver is defined in package configuration file.
in order to log scenarios, logger service must be active. this feature could be find on configuration file:
...
'is_active' => true,
...
storage
alternative logging storage driver could be defined by defining that in configuration file like this:
...
'default_storage_driver' => Path\TO\YourStorageDriver,
...
YourStorageDriver
class must implement Escherchia\LaravelScenarioLogger\StorageDrivers\StorageDriverInterface
database driver connection
if you decide to use built-in database driver to log your scenarios art persistent layer, you can specify which database driver should be used.
...
'storage_drivers' => [
'database' => [
'connection' => 'your-connection-name'
]
]
...
logger services
for each scenario each part of logging is handled by a dedicated module. you can remove this feature from process of scenario logger by commenting this module on list of active services:
...
'service_configuration' => [
'log_user' => [
'active' => true,
'class' => LogUser::class
],
'log_response' => [
'active' => true,
'class' => LogResponse::class,
'disable-store-content' => false,
],
'log_request' => [
'active' => true,
'class' => LogRequest::class,
],
'log_exception' => [
'active' => true,
'class' => LogException::class,
],
'log_manual_trace' => [
'active' => true,
'class' => LogManualTrace::class,
],
'log_model_changes' => [
'active' => true,
'class' => LogModelChanges::class,
'models' => [
// model goes here
],
],
]
...
excluded routes
you can introduce some route uris as excluded routes to log like this:
...
'excluded-routes' => [
'some/route/uri'
]
...
Contributing
if you want to contribute in this project please follow this instruction.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a PR on this repository
- wait to accept and merge the PR
License
Distributed under the MIT License. See LICENSE
for more information.
Contact
Mehrdad Mahdian: Gmail
Project Link: laraval-scenario-logger
Todo
- descriptive comment for config items
- update dependencies to proper versions in composer.json
- support logger in console mode
Suggested Features
- log viewer utility
- console commands scenario logs
- ability to store logs in queue