ActivityLog, un package interamente dedicato al logging!

0
34

Spesso, nella nostra applicazione, abbiamo bisogno di tracciare e notificare le attività degli utenti: ad esempio chi ha effettuato il login, chi ha inserito un determinato contenuto, chi ha modificato qualcosa. Sarebbe comodo memorizzare queste azioni registrando anche “quando” sono avvenute, insieme ad altre informazioni.

Per venire incontro a questa esigenza ti presento ActivityLog, un package che ti permette di registrare con facilità i log per le diverse azioni degli utenti nel database e visualizzarle ad esempio nella dashboard dell’amministratore.

Installazione

Installazione, registrazione del service provider e aliasing

Per installare ActivityLog assicurati di aggiungere all’interno del composer.json la riga regulus/activity-log tra i require così:

“require”: {
“regulus/activity-log”: “0.3.0”
},

Esegui quindi da riga di comando l’istruzione composer update.

Composer installerà il package ActivityLog. Non ti rimane che registrare il service provider nel file app/config/app.php, nell’ array providers:

‘RegulusActivityLogActivityLogServiceProvider’,

Aggiungi questa riga nell’array aliases:

‘Activity’ => ‘RegulusActivityLogActivity’,

Migration e Seed del Database

Per eseguire la migration (una singola tabella DB), esegui il comando artisan:

php artisan migrate –package=regulus/activity-log

Pubblicazione del File di Configurazione

Se vuoi personalizzare la configurazione di ActivityLog, è necessario pubblicare il file di configurazione. Esegui dalla riga di comando:

php artisan config:publish regulus/activity-log

Ora potrai modificare il file di configurazione in app/config/packages/regulus/activity-log.

Uso Base

Registrare le Azioni degli Utenti

Activity::log([
‘contentId’ => $user->id,
‘contentType’ => ‘User’,
‘action’ => ‘Create’,
‘description’ => ‘Created a User’,
‘details’ => ‘Username: ‘.$user->username,
‘updated’ => $id ? true : false,
]);

Grazie al codice appena visto verranno registrate le azioni dell’utente correntemente loggato. L’indirizzo IP verrà salvato in automatico e il flag “developer” sarà impostato se l’utente corrente avrà una variabile di sessione “developer” settata su true.

Una piccola ottimizzazione che ti propongo è quella di scatenare un evento che esegue Activity::log() ogni volta che lo desideri, magari parametrizzandolo opportunamente.

Prendiamo ad esempio l’azione di login. Ogni volta che l’utente viene autenticato puoi lanciare l’evento in questo modo:

$logevent = Event::fire(‘logactivity.regaction’,array(‘utente’,’login’,’accesso utente’));

E registrare il listener così:

Event::listen(‘logactivity.regaction’, function($contentType, $action, $description)
{
Activity::log(array(
‘contentId’ => Auth::user()->id,
‘contentType’ => $contentType,
‘action’ => $action,
‘description’ => $description,
‘details’ => Auth::user()->nome.’ ‘.Auth::user()->cognome.’ – ‘.Auth::user()->email
));
});

Semplicemente quindi, ti basterà inserire una riga di codice per ogni azione da registrare.

Ogni soluzione alternativa è ben accetta. Segnalacela.

Per oggi è tutto. Alla prossima!