https://github.com/linkorb/linkorb-app-event-bundle
Integrates and provides a handy configuration for linkorb/app-event and its standard scheme for logging Application Events
https://github.com/linkorb/linkorb-app-event-bundle
Last synced: 6 months ago
JSON representation
Integrates and provides a handy configuration for linkorb/app-event and its standard scheme for logging Application Events
- Host: GitHub
- URL: https://github.com/linkorb/linkorb-app-event-bundle
- Owner: linkorb
- Created: 2019-08-12T13:31:54.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-10-06T09:49:58.000Z (over 3 years ago)
- Last Synced: 2024-04-15T02:52:24.792Z (about 2 years ago)
- Language: PHP
- Size: 12.7 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# linkorb/app-event-bundle
Integrates and provides a handy configuration for linkorb/app-event and its standard scheme for
logging Application Events.
Installation
============
Applications that use Symfony Flex
----------------------------------
Open a command console, enter your project directory and execute:
```console
$ composer require linkorb/app-event-bundle
```
Applications that don't use Symfony Flex
----------------------------------------
### Step 1: Download the Bundle
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:
```console
$ composer require linkorb/app-event-bundle
```
This command requires you to have Composer installed globally, as explained
in the [installation chapter](https://getcomposer.org/doc/00-intro.md)
of the Composer documentation.
### Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the `config/bundles.php` file of your project:
```php
// config/bundles.php
return [
// ...
LinkORB\AppEventBundle\LinkORBAppEventBundle::class => ['all' => true],
];
```
Usage
=====
The bundle will automatically inject a special App Event logger into services
and controllers which implement AppEventLoggerAwareInterface. There are a few
ways to achieve this.
Use AppEventLoggerTrait which provides an implementation of both
AppEventLoggerAwareInterface and AppEventLoggerInterface:
```php
use LinkORB\AppEvent\AppEventLoggerAwareInterface;
use LinkORB\AppEvent\AppEventLoggerInterface;
use LinkORB\AppEvent\AppEventLoggerTrait;
class MyService implements AppEventLoggerAwareInterface,
AppEventLoggerInterface
{
use AppEventLoggerTrait;
public function myMethod()
{
// using the trait makes it very simple to add AppEvent logging:
$this->log('my.app.event', ['some-info' => ...], 'notice');
}
}
```
If your Controllers extend Symfony's AbstractController you can instead make
them extend AppEventLoggingController which does the above for you and also
extends Symfony's AbstractController:
```php
use LinkORB\AppEventBundle\Logger\AppEventLoggingController;
class MyController extends AppEventLoggingController
{
public function myAction()
{
$this->log('my.app.event', ['some-info' => ...], 'notice');
}
}
```
Your services can extend AppEventLoggingService to get the same benefit:
```php
use LinkORB\AppEventBundle\Logger\AppEventLoggingService;
class MyService extends AppEventLoggingService
{
public function myMethod()
{
$this->log('my.app.event', ['some-info' => ...], 'notice');
// by omission of the third argument, log() will log to the minimum log
// level, which is whatever you set in the Monolog handler config
$this->log('my.app.event', ['some-info' => ...);
// you can also call the logger methods directly, but only do this
// when the bundle is configured in all environments
$this->appEventLogger->error('my.app.event', ['some-info' => ...]);
}
}
```
Configuration
=============
You need to create a Monolog configuration for each of the environments in
which the bundle is enabled (which by default is all of them). Put this in
each of the Monolog config files:
```yaml
monolog:
channels:
- app_event
handlers:
app_events:
type: stream
path: "%kernel.logs_dir%/app-events-%kernel.environment%.ndjson"
level: info
channels: ["app_event"]
```
In the above config, we instruct Symfony's Monolog Bundle to create an
additional Logger service with the name `monolog.logger.app_event` and to
create an instance of Monlog's StreamHandler which will be used by our logger
to write to the file at `path`. The minimum logging level for our logger is
set to INFO. This is the minimum you need to do to configure the logger, but
there are a few extra things you can configure.
The following configurations can be set independently in each environment, for
example you could place the directives in a file named
`config/packages/prod/linkorb_app_event.yaml`. If the bundle has been enabled
in every environment then you can configure it simultaneously for all
environments in `config/packages/linkorb_app_event.yaml`.
You can turn off the TokenProcessor which automatically adds information to App
events about the authenticated user:
```yaml
linkorb_app_event:
token_processor: false
```
You can turn on the TagProcessor which will add your tags to App events:
```yaml
linkorb_app_event:
tag_processor:
tags:
mytag:
myothertag:
tagwithvalue: a-value
```
Finally there are a few things you can configure that you are unlikely to need.
You can change the name of the logging channel from the default `app_event`:
```yaml
linkorb_app_event:
channel_name: "my_channel_name"
```
Remember to use this channel name instead of `app_event` in the Monolog config
files.
You can also change the name of the logging handler from the default
`app_events`:
```yaml
linkorb_app_event:
handler_name: "my_handler_name"
```
Remember to use this handler name instead of `app_events` in the Monolog config
files.
Happy Application Event Logging!