Easy Audit
A Symfony Bundle To Log Selective Events. It is easy to configure and easy to customize for your need.
Note: If you are using Symfony version older than 5.0 you need to use EasyAuditBundle 1.4.x
Install
- Add EasyAuditBundle in your composer.json
- Enable the Bundle
- Create audit_log entity class
- Configure config.yml
- Update Database Schema
1. Add EasyAuditBundle in your composer.json
Add EasyAuditBundle in your composer.json:
{
"require": {
"xiidea/easy-audit": "^2.0"
}
}
Now tell composer to download the bundle by running the command:
$ php composer.phar update xiidea/easy-audit
Composer will install the bundle to your project's vendor/xiidea
directory.
2. Enable the Bundle
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Xiidea\EasyAuditBundle\XiideaEasyAuditBundle(),
);
}
3. Create audit_log entity class
The XiideaEasyAuditBundle supports Doctrine ORM/MongoDB by default. However, you must provide a concrete AuditLog class. Follow the instructions to set up the class:
4. Configure config.yml
You can find sample config data in Resources/config/config-sample.yml
file
# app/config/config.yml
xiidea_easy_audit:
#resolver: xiidea.easy_audit.default_event_resolver #Optional
#audit_log_class : MyProject\Bundle\MyBundle\Entity\AuditLog #Required
#doctrine_event_resolver : xiidea.easy_audit.default_doctrine_event_resolver #Optional
#default_logger : true #Optional
#user property to use as actor of an event
#valid value will be any valid property of your user class
user_property : ~ # or username #Optional
#List of doctrine entity:event you wish to track or set to false to disable logs for doctrine events
# valid events are = [created, updated, deleted]
#doctrine_objects : #Optional
# MyProject\Bundle\MyBundle\Entity\MyEntity : [created, updated, deleted]
# MyProject\Bundle\MyBundle\Entity\MyEntity2 : []
#List all events you want to track (Optional from v1.2.1 you can now use subscriber to define it)
events : #Optional
- security.interactive_login
#List all custom resolver for event
#custom_resolvers :
# security.interactive_login : user.event_resolver
# security.authentication.failure : user.event_resolver
#logger_channel:
# xiidea.easy_audit.logger.service: ["info", "debug"]
# file.logger: ["!info", "!debug"]
#Custom Event Resolver Service
services:
#user.event_resolver:
# class: Xiidea\EasyAuditBundle\Resolver\UserEventResolver
# calls:
# - [ setContainer,[ @service_container ] ]
5. Update Database Schema
As all setup done, now you need to update your database schema. To do so,run the following command from your project directory
$ php app/console doctrine:schema:update --force
Core Concepts
Logger
Logger
is the core service which are responsible for persist the event info. You can define as many logger as you like.
EasyAudit Bundled with a logger service xiidea.easy_audit.logger.service
which is the default logger service. You can easily
disable the service by setting default_logger: false
in configuration.
Resolver
Resolver
is like translator for an event. It used to translate an event to AuditLog entity. EasyAudit bundled with two(2)
resolver services xiidea.easy_audit.default_event_resolver
, xiidea.easy_audit.default_doctrine_event_resolver
. And a
custom EventResolver class UserEventResolver
to illustrate how the transformation works. You can define as many resolver
service as you want and use them to handle different event. Here is the place you can set the severity level for a event. Default
level is Psr\Log\LogLevel::INFO
. Custom severity levels are not available. EasyAudit supports the logging levels
described by PSR-3. These values are present for basic filtering purposes. You can
use this value as channel to register different logger to handle different event. If you add any other field to your
AuditLog object, this is the place to add those extra information (tags, metadata, etc..)
Channel
It is now possible to register logger for specific channel. channel is refers to log level. you can configure EasyAudit logger
services to handle only specific level of event.
Warning - BC Breaking Changes
Since v1.2.2
pre_persist_listener
option has been removed. You can use
this cookbook
to achieve the same functionalitySince v1.2.2
EventResolverInterface
been split intoEmbeddedEventResolverInterface
andEventResolverInterface
Since v1.3.x The new Event object has been adapted. And the signature of
EmbeddedEventResolverInterface
and
EventResolverInterface
also changed. Now it expects extra $eventName parameterSince v1.4.7
EntityEventResolver
been refactored to a simplified version, if your code directly depends on older version of the implementation
you are advised to copy the content of old implementation from hereSince v2.0 The FosUserBundle Events are removed from
UserEventResolver
and Event class usingSymfony\Contracts\*
namespaceCookbook
Look the cookbook for another interesting things.
Copyright (c) 2013 Xiidea <http://www.xiidea.net/>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
Merge pull request #46 from jeroennoten/patch-1
By web-flow, 1 year ago
-
Fix typo in readme
By web-flow, 1 year ago
-
Enable Test in 7.4
By ronisaha, 1 year ago
-
:star: [#45] Update Documentation
By ronisaha, 1 year ago
-
:star: [#45] Update PHPUnit
By ronisaha, 1 year ago
-
Disable Test in 7.4 till Update the test suits
By ronisaha, 1 year ago
-
:star: [#45] Remove BC Layer
By ronisaha, 1 year ago
-
Use PHP 7.3 for test coverage check
By ronisaha, 1 year ago
-
remove Debug Code
By ronisaha, 1 year ago
-
:star: [#45] Remove Symfony4.4 from test metrics
By ronisaha, 1 year ago
-
:star: [#45] Update Travis CI for supported test metrics
By ronisaha, 1 year ago
-
Ignore Test from package
By ronisaha, 1 year ago
-
:star: [#45] Update Test Cases
By ronisaha, 1 year ago
-
:star: [#45] Remove FOSUserBundle Events
By ronisaha, 1 year ago
-
:star: [#45] Use Event from Symfony\Contracts namespace
By ronisaha, 1 year ago
-
:star: [#45] Update Test Cases For EventDispatcher
By ronisaha, 1 year ago
-
:star: [#45] Remove LegacyEventDispatcherProxy BC Layer
By ronisaha, 1 year ago
-
:star: [#45] Remove BC Layer
By ronisaha, 1 year ago
-
:star: [#45] Remove incorrect class import
By ronisaha, 1 year ago
-
:star: [#45] Remove BC Layer
By ronisaha, 1 year ago
-
:star: [#45] Get ImpersonatingUser From SwitchUserToken
By ronisaha, 1 year ago
-
:star: [#45] Update Composer Dependencies
By ronisaha, 1 year ago
-
Address Symfony 4.x deprecations
By ronisaha, 1 year ago
-
Update travis test matrix
By ronisaha, 1 year ago
-
Remove php 5.x from test matrix
By ronisaha, 2 years ago
-
Fix Typo in documentation [skip ci]
By ronisaha, 2 years ago
-
Add BC breaking note [skip ci]
By ronisaha, 2 years ago
-
Update PHP and Symfony version in travis CI
By ronisaha, 2 years ago
-
Add a Codacy badge to README.md [skip ci]
By ronisaha, 2 years ago
-
Fix Heading level
By ronisaha, 2 years ago