Logger
Самый простой и быстрый подход с использованием регистратора, представленную Laravel из коробки.
Вы можете отслеживать пользователя, добавив строку кода, подобную этой:
Log::info('Showing user profile for user: '.$id);
Где $ Ид
$user = Auth::user();
Или сделать его насухо создать статический метод для повторного использования через ваш применение:
public static function trackUser($message){
$user = Auth::user();
Log::info('Showing user profile for user: '.$user->id);
}
Расширьте это, чтобы добавить больше данных по желанию.
Более подробная информация о регистраторе Laravel по адресу:
https://laravel.com/docs/5.2/errors#logging
журнала событий/пересмотров
Если вы хотите, чтобы также отслеживать объекты в вашей системе вы могли бы хотеть также рассмотреть что-то вроде журнал событий:
Я использовал эту библиотеку: https://github.com/VentureCraft/revisionable в прошлом, и она хорошо работала для моей цели.
Evert time, когда сущность была изменена, создана или удалена, она будет вставлять запись в таблицу ревизий с сериализованным значением предыдущего и нового значений.
Вам нужно будет настроить свои объекты. Это пример того, как я поставил его на лицо:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Sofa\Revisionable\Laravel\RevisionableTrait;
use Sofa\Revisionable\Revisionable;
class Invoice extends Model implements Revisionable {
use RevisionableTrait;
protected $table = 'invoices';
protected $fillable = ['po_id', 'file_name', 'charges', 'customer', 'company', 'notes', 'tax', 'created_by'];
protected $revisionPresenter = 'App\Presenters\InvoicePresenter';
public function po()
{
return $this->belongsTo('App\PO');
}
public function transactions()
{
return $this->hasMany('App\Transaction');
}
}
После того, что вы будете иметь возможность отслеживать изменилось на ваших лиц, не делая ничего лишнего в вашем коде.
Event Sourcing
источников событий представит много сложностей для вашего приложения, но он будет решать много проблем.Внедряя этот шаблон, вы сможете не только регистрировать то, что пользователь делает в вашей системе, но и отслеживать каждую сущность с течением времени. Это достигается только за счет хранения событий по мере их возникновения и воссоздания объектов путем запуска всех событий. Это повлияет на производительность, но это можно решить, объединив этот шаблон с шаблоном Materialized View. Это может добавить конечную последовательность для вашего приложения.
Пожалуйста, убедитесь, что это действительно ценность использования этого шаблона, в противном случае вы (и ваша команда) будете чувствовать боль сложности
я не смог разместить ссылку на поиск событий (не хватает репутации) , но вот он: [Laravel-Broadway] (https://github.com/nWidart/Laravel-broadway). Вот общее описание шаблона: [Шаблоны проектирования Microsoft] (https://msdn.microsoft.com/en-us/library/dn589792.aspx) – gaheinrichs
Спасибо @gaheinrichs. Я попробую, как вы сказали. – Nagesh
@gaheinrichs Лучше, если вы включите соответствующую информацию в свой ответ, в дополнение к ссылкам. В противном случае, ссылки только для ответов сразу рассматриваются для удаления. У вас очень хорошее начало для высококачественного ответа здесь, так что сделайте дополнительные шаги и включите, как использовать рекомендуемые вами подходы. –