uatthaphon/laravel-activity-monitor
Composer 安装命令:
composer require uatthaphon/laravel-activity-monitor
包简介
The activity logged to monitor your website
README 文档
README
Activity Monitor Log is an activity logger for monitoring user activity and eloquent models events activity.
Note: This package use laravel 5.5+ it require php 7.0+
Setup
Add package dependency to your project
composer require uatthaphon/laravel-activity-monitor
As the package build for laravel 5.5+, I use Auto-Discovery
so we don't need to add service provider in config\app.php anymore
Run publishing to get the database migration for table activity_monitors
php artisan vendor:publish --tag=migrations
After published, we can create table by running the migrations
php artisan migrate
Usage
Logger
This package have 2 aliases AMLog and AMView for us to easily use to save the log and view the logs.
We don't need to add those 2 aliases to config/app.php neither.
It already added for us by Auto-Discovery.
Example, log the user updated their post.
use AMLog; $post = Post::where('user_id', $id)->firstOrFail(); $post->body = 'update body content'; $post->save(); AMLog::logName('custom log name') // Declare log name ->description('user updated post content') // Log description ->happenTo($post) // Model of the event happen to ->actBy(\Auth::user()) // Model that cause this event ->meta(['key'=>'value']) // Additional pieces of information ->save(); // Let's Save the log
AMlog also prepared some of the log name for us to easily use => debug, error, fatal, info, warning
use AMLog; ... AMLog::debug('some debug description')->save(); AMLog::error('some error description')->save(); AMLog::fatal('some fatal description')->save(); AMLog::info('some info description')->save(); AMLog::warning('some warning description')->save();
That's it 🎶
Eloquent Models Events Log
For you to easy log your eloquent model activities when created, updated, deleted.
After you setting up the package then add ModelEventActivity Trait to your model.
namespace App\Models; ... use Uatthaphon\ActivityMonitor\Traits\ModelEventActivity; class ToBelog extends Model { use ModelEventActivity; ... }
This feature will record only changes in your application by setting protected static $loggable to tell the logger which attributes should be logs.
Note: It will not log attribute that use database default value... Except you add value to the attribute by your self
... use Uatthaphon\ActivityMonitor\Traits\ModelEventActivity; class ToBelog extends Model { use ModelEventActivity; protected static $loggable = ['title', 'description'] }
If title record changed, It will only log title field in the table activity_monitors
{"title": "has some change"}
We can cutomize which eloquent event should be log by protected static $eventsToLog.
In the example below only created event for this model will be logged
... use Uatthaphon\ActivityMonitor\Traits\ModelEventActivity; class ToBelog extends Model { use ModelEventActivity; protected static $eventsToLog = ['created'] }
We can add our meta data to each event by add this to yout model
... use Uatthaphon\ActivityMonitor\Traits\ModelEventActivity; class ToBelog extends Model { use ModelEventActivity; protected static $createdEventMeta = ['create key' => 'create value']; protected static $updatedEventMeta = ['update key' => 'update value']; protected static $deletedEventMeta = ['deletd key' => 'delete value']; ... }
View Logs
We can use AMView to get our logs it will return as ActivityMonitor
See this example below
use AMView; ... // Get all AMView::all(); // get all the logs AMView::get(); // also act the same as all() // With conditions AMView::logName('your_log_name') // get by log name ->limit(5) // limit resutls ->sortBy('desc') // sort By desc or asc ->get(); // Get from multiple log names AMView::logName('info', 'updated')->get(); AMView::logName(['info', 'updated'])->get(); // Get all specific lastest post log From current user $user = \Auth::user(); $post = $user->post()->last($user); AMView::happenTo($post)->ActBy($user)->get(); // Or call from providings log name function AMView::debug()->all(); AMView::error()->all(); AMView::fatal()->all(); AMView::info()->all(); AMView::warning()->all(); ...
Try and see. It will return collection of ActivityMonitor model
use AMView; ... $am = AMView::info()->all()->last(); $am->log_name; // Get log name $am->description; // Get description $am->agent; // Get user browser agent $am->ip; // Get user ip address $traces = $am->traces; // Get traces foreach ($traces as $key => $value) { // do something } $meta = $am->meta; // Get you custom meta data foreach ($meta as $key => $value) { // do something } ...
View Log In Specific Model
We can add ActivityMonitor to our model
... use Uatthaphon\ActivityMonitor\Traits\ActivityMonitorRelations; class User extends Authenticatable { use ActivityMonitorRelations; ... }
Now we can use activity() polymorphic relations
// Get all activity records of the current user \Auth::user()->activity()->get(); // Retrived with more specific // By tell with model record user was interact with $user = \Auth::user(); $user->activity()->happenTo($user->posts()-last())->get(); // Use the providing log name function $user->activity()->info()->get(); // Use the providing log name with specific fom model togetter $user->activity() ->info() ->happenTo($user->posts()-last()) ->get();
uatthaphon/laravel-activity-monitor 适用场景与选型建议
uatthaphon/laravel-activity-monitor 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 02 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「log」 「monitor」 「laravel」 「acitivty」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 uatthaphon/laravel-activity-monitor 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 uatthaphon/laravel-activity-monitor 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 uatthaphon/laravel-activity-monitor 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Symfony bundle to monitor and execute commands
Collections of statsd collectors with templated metric names
A Laravel package to monitor queue jobs.
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
Laravel 5.x.x library for integration Monolog Sentry
Pacote simplificado para persistência de logs
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-16