تلسکوپ لاراول
- معرفی
- نصب و راه اندازی
- ارتقاء تلسکوپ
- فیلتر کردن
- برچسب زدن
- دیده بان های موجود
- نمایش آواتارهای کاربران
معرفی
تلسکوپ لاراول یک همراه فوق العاده برای محیط توسعه لاراول محلی شما می سازد. تلسکوپ بینشی در مورد درخواستهایی که به برنامه شما وارد میشوند، استثناها، ورودیهای گزارش، پرسشهای پایگاه داده، کارهای در صف، نامهها، اعلانها، عملیات حافظه پنهان، وظایف برنامهریزیشده، تخلیههای متغیر و موارد دیگر را ارائه میدهد.
نصب و راه اندازی
می توانید از مدیر بسته Composer برای نصب تلسکوپ در پروژه لاراول خود استفاده کنید:
composer require laravel/telescope
پس از نصب تلسکوپ، دارایی ها و مهاجرت های آن را با استفاده از
telescope:install
دستور Artisan منتشر کنید. پس از نصب تلسکوپ،
migrate
برای ایجاد جداول مورد نیاز برای ذخیره داده های تلسکوپ،
باید دستور را نیز اجرا کنید :
php artisan telescope:install php artisan migrate
در نهایت، می توانید از طریق مسیر به داشبورد تلسکوپ دسترسی داشته باشید
/telescope
.
نصب فقط محلی
اگر قصد دارید فقط از تلسکوپ برای کمک به توسعه محلی خود استفاده کنید، می توانید تلسکوپ را با استفاده از
--dev
پرچم نصب کنید:
composer require laravel/telescope --dev php artisan telescope:install php artisan migrate
پس از اجرا
telescope:install
، باید
TelescopeServiceProvider
ثبت نام ارائه دهنده خدمات را از فایل پیکربندی برنامه خود حذف کنید
bootstrap/providers.php
. در عوض، ارائه دهندگان خدمات تلسکوپ را به
register
روش کلاس خود به صورت دستی ثبت کنید
App\Providers\AppServiceProvider
. ما مطمئن خواهیم شد که محیط فعلی
local
قبل از ثبت ارائه دهندگان است:
/** * Register any application services. */public function register(): void{ if ($this->app->environment('local')) { $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class); $this->app->register(TelescopeServiceProvider::class); }}
در نهایت، همچنین باید با افزودن موارد زیر به فایل خود، از
کشف خودکار
بسته تلسکوپ جلوگیری کنید
composer.json
:
"extra": { "laravel": { "dont-discover": [ "laravel/telescope" ] }},
پیکربندی
پس از انتشار دارایی های تلسکوپ، فایل پیکربندی اولیه آن در
config/telescope.php
. این فایل پیکربندی به شما امکان می دهد تا
گزینه های تماشاگر
خود را پیکربندی کنید . هر گزینه پیکربندی شامل شرحی از هدف خود است، بنابراین حتما این فایل را به طور کامل بررسی کنید.
در صورت تمایل، می توانید مجموعه داده های تلسکوپ را به طور کامل با استفاده از
enabled
گزینه پیکربندی غیرفعال کنید:
'enabled' => env('TELESCOPE_ENABLED', true),
هرس داده ها
بدون هرس،
telescope_entries
جدول می تواند رکوردها را خیلی سریع جمع آوری کند. برای کاهش این مشکل، باید
دستور
Artisan را برای اجرای روزانه
برنامه ریزی کنید :
telescope:prune
use Illuminate\Support\Facades\Schedule; Schedule::command('telescope:prune')->daily();
به طور پیشفرض، تمام ورودیهای قدیمیتر از 24 ساعت هرس میشوند. میتوانید
hours
هنگام فراخوانی فرمان برای تعیین مدت زمان نگهداری دادههای تلسکوپ از این گزینه استفاده کنید. به عنوان مثال، دستور زیر تمام رکوردهای ایجاد شده بیش از 48 ساعت قبل را حذف می کند:
use Illuminate\Support\Facades\Schedule; Schedule::command('telescope:prune --hours=48')->daily();
مجوز داشبورد
داشبورد تلسکوپ ممکن است از طریق
/telescope
مسیر قابل دسترسی باشد. به طور پیش فرض، شما فقط می توانید در
local
محیط به این داشبورد دسترسی داشته باشید. در فایل شما ، یک تعریف
دروازه مجوز
app/Providers/TelescopeServiceProvider.php
وجود دارد
. این دروازه مجوز دسترسی به تلسکوپ را در محیط های
غیر محلی
کنترل می کند . شما آزاد هستید که در صورت نیاز این گیت را تغییر دهید تا دسترسی به نصب تلسکوپ خود را محدود کنید:
use App\Models\User; /** * Register the Telescope gate. * * This gate determines who can access Telescope in non-local environments. */protected function gate(): void{ Gate::define('viewTelescope', function (User $user) { return in_array($user->email, [ 'taylor@laravel.com', ]); });}
APP_ENV
شما باید اطمینان حاصل کنید که متغیر محیط خود راproduction
در محیط تولید خود تغییر داده اید. در غیر این صورت، نصب تلسکوپ شما برای عموم در دسترس خواهد بود.
ارتقاء تلسکوپ
هنگام ارتقاء به نسخه اصلی جدید تلسکوپ، مهم است که راهنمای ارتقا را به دقت مرور کنید .
علاوه بر این، هنگام ارتقاء به هر نسخه جدید تلسکوپ، باید دارایی های تلسکوپ را مجدداً منتشر کنید:
php artisan telescope:publish
برای به روز نگه داشتن دارایی ها و جلوگیری از مشکلات در به روز رسانی های بعدی، می توانید این
vendor:publish --tag=laravel-assets
دستور را به
post-update-cmd
اسکریپت های فایل برنامه خود اضافه کنید
composer.json
:
{ "scripts": { "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force" ] }}
فیلتر کردن
ورودی های
میتوانید دادههایی را که توسط تلسکوپ ضبط میشود از طریق بستهای که در
کلاس
filter
شما تعریف شده است فیلتر کنید.
App\Providers\TelescopeServiceProvider
به طور پیشفرض، این بسته شدن تمام دادههای موجود در
local
محیط و استثناها، کارهای ناموفق، کارهای زمانبندی شده و دادهها را با برچسبهای نظارت شده در همه محیطهای دیگر ثبت میکند:
use Laravel\Telescope\IncomingEntry;use Laravel\Telescope\Telescope; /** * Register any application services. */public function register(): void{ $this->hideSensitiveRequestDetails(); Telescope::filter(function (IncomingEntry $entry) { if ($this->app->environment('local')) { return true; } return $entry->isReportableException() || $entry->isFailedJob() || $entry->isScheduledTask() || $entry->isSlowQuery() || $entry->hasMonitoredTag(); });}
دسته ها
در حالی که
filter
بسته شدن دادهها را برای ورودیهای جداگانه فیلتر میکند، میتوانید از
filterBatch
روشی برای ثبت بستهای استفاده کنید که تمام دادهها را برای یک درخواست یا دستور کنسول معین فیلتر میکند. اگر بسته شدن برگردد
true
، تمام ورودیها توسط تلسکوپ ثبت میشوند:
use Illuminate\Support\Collection;use Laravel\Telescope\IncomingEntry;use Laravel\Telescope\Telescope; /** * Register any application services. */public function register(): void{ $this->hideSensitiveRequestDetails(); Telescope::filterBatch(function (Collection $entries) { if ($this->app->environment('local')) { return true; } return $entries->contains(function (IncomingEntry $entry) { return $entry->isReportableException() || $entry->isFailedJob() || $entry->isScheduledTask() || $entry->isSlowQuery() || $entry->hasMonitoredTag(); }); });}
برچسب زدن
تلسکوپ به شما امکان می دهد تا ورودی ها را با "برچسب" جستجو کنید. اغلب، برچسبها نام کلاس مدل Eloquent یا شناسههای کاربری تأیید شده هستند که تلسکوپ به طور خودکار به ورودیها اضافه میکند. گاهی اوقات، ممکن است بخواهید برچسب های سفارشی خود را به ورودی ها پیوست کنید. برای انجام این کار، می توانید از
Telescope::tag
روش استفاده کنید. این
tag
روش بسته شدنی را می پذیرد که باید آرایه ای از برچسب ها را برگرداند. برچسبهایی که با بسته شدن بازگردانده میشوند با هر برچسبی که تلسکوپ به طور خودکار به ورودی متصل میکند ادغام میشود. به طور معمول، شما باید
tag
متد را در
register
متد کلاس خود فراخوانی کنید
App\Providers\TelescopeServiceProvider
:
use Laravel\Telescope\IncomingEntry;use Laravel\Telescope\Telescope; /** * Register any application services. */public function register(): void{ $this->hideSensitiveRequestDetails(); Telescope::tag(function (IncomingEntry $entry) { return $entry->type === 'request' ? ['status:'.$entry->content['response_status']] : []; }); }
دیده بان های موجود
"نظارتان" تلسکوپ داده های برنامه را هنگامی که یک درخواست یا فرمان کنسول اجرا می شود جمع آوری می کند. میتوانید فهرست ناظرانی را که میخواهید در
config/telescope.php
فایل پیکربندی خود فعال کنید، سفارشی کنید:
'watchers' => [ Watchers\CacheWatcher::class => true, Watchers\CommandWatcher::class => true, ...],
برخی از ناظران همچنین به شما امکان می دهند گزینه های سفارشی سازی اضافی را ارائه دهید:
'watchers' => [ Watchers\QueryWatcher::class => [ 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), 'slow' => 100, ], ...],
ناظر دسته ای
ناظر دسته اطلاعات مربوط به دسته های در صف را ثبت می کند ، از جمله اطلاعات شغل و اتصال.
کش کش
زمانی که یک کلید حافظه پنهان زده می شود، از دست می رود، به روز می شود و فراموش می شود، ناظر کش داده ها را ثبت می کند.
ناظر فرمان
ناظر فرمان آرگومان ها، گزینه ها، کد خروج و خروجی را هر زمان که یک فرمان Artisan اجرا می شود، ثبت می کند. اگر می خواهید دستورات خاصی را از ضبط شدن توسط تماشاگر حذف کنید، می توانید دستور را در
ignore
گزینه داخل فایل خود مشخص کنید
config/telescope.php
:
'watchers' => [ Watchers\CommandWatcher::class => [ 'enabled' => env('TELESCOPE_COMMAND_WATCHER', true), 'ignore' => ['key:generate'], ], ...],
ناظر تخلیه
Dump Watcher تخلیه های متغیر شما را در تلسکوپ ضبط و نمایش می دهد. هنگام استفاده از لاراول، متغیرها ممکن است با استفاده از
dump
تابع سراسری حذف شوند. تب dump watcher باید در مرورگر باز باشد تا dump ثبت شود، در غیر این صورت، dump ها توسط ناظر نادیده گرفته می شوند.
ناظر رویداد
ناظر رویداد، محموله، شنوندگان و داده های پخش را برای هر رویدادی که برنامه شما ارسال می کند، ضبط می کند. رویدادهای داخلی چارچوب لاراول توسط Event Watcher نادیده گرفته می شود.
ناظر استثنایی
ناظر استثنا، داده ها و ردیابی پشته را برای هر استثنای قابل گزارشی که توسط برنامه شما ایجاد می شود، ثبت می کند.
نگهبان دروازه
گیت ناظر داده ها و نتایج بررسی های
گیت و سیاست
را توسط برنامه شما ثبت می کند. اگر میخواهید تواناییهای خاصی را از ضبط شدن توسط تماشاگر حذف کنید، میتوانید آنها را در
ignore_abilities
گزینه موجود در
config/telescope.php
فایل خود مشخص کنید:
'watchers' => [ Watchers\GateWatcher::class => [ 'enabled' => env('TELESCOPE_GATE_WATCHER', true), 'ignore_abilities' => ['viewNova'], ], ...],
HTTP Client Watcher
ناظر سرویس گیرنده HTTP درخواست های مشتری HTTP خروجی را که توسط برنامه شما ارسال شده است، ثبت می کند.
ناظر کار
کار ناظر داده ها و وضعیت هر شغل ارسال شده توسط برنامه شما را ثبت می کند.
لاگ ناظر
ناظر گزارش، داده های گزارش را برای هر گزارشی که توسط برنامه شما نوشته شده است، ثبت می کند.
error
به طور پیشفرض، تلسکوپ فقط گزارشها را در سطح و بالاتر
ضبط میکند .
با این حال، می توانید
level
گزینه موجود در فایل پیکربندی برنامه خود
config/telescope.php
را برای اصلاح این رفتار تغییر دهید:
'watchers' => [ Watchers\LogWatcher::class => [ 'enabled' => env('TELESCOPE_LOG_WATCHER', true), 'level' => 'debug', ], // ...],
ناظر ایمیل
ناظر نامه به شما امکان می دهد پیش نمایش ایمیل های
ارسال شده توسط برنامه خود را همراه با داده های مرتبط با آنها
در مرورگر مشاهده کنید .
همچنین می توانید ایمیل را به صورت
.eml
فایل دانلود کنید.
ناظر مدل
ناظر مدل هر زمان که یک
رویداد مدل
Eloquent ارسال می شود، تغییرات مدل را ثبت می کند. میتوانید مشخص کنید که کدام رویدادهای مدل باید از طریق گزینه تماشاگر ثبت شوند
events
:
'watchers' => [ Watchers\ModelWatcher::class => [ 'enabled' => env('TELESCOPE_MODEL_WATCHER', true), 'events' => ['eloquent.created*', 'eloquent.updated*'], ], ...],
اگر می خواهید تعداد مدل های هیدراته شده در طول یک درخواست معین را ثبت کنید، این
hydrations
گزینه را فعال کنید:
'watchers' => [ Watchers\ModelWatcher::class => [ 'enabled' => env('TELESCOPE_MODEL_WATCHER', true), 'events' => ['eloquent.created*', 'eloquent.updated*'], 'hydrations' => true, ], ...],
ناظر اعلان
ناظر اعلان ها تمام اعلان های ارسال شده توسط برنامه شما را ثبت می کند. اگر اعلان یک ایمیل را راهاندازی کند و نظارتکننده ایمیل را فعال کرده باشید، ایمیل برای پیشنمایش در صفحه ناظر ایمیل نیز در دسترس خواهد بود.
ناظر پرس و جو
ناظر پرس و جو، SQL خام، اتصالات و زمان اجرا را برای همه پرس و جوهایی که توسط برنامه شما اجرا می شوند را ثبت می کند. ناظر همچنین هر درخواستی را با سرعت کمتر از 100 میلی ثانیه به عنوان برچسب گذاری می کند
slow
. شما می توانید آستانه پرس و جو کند را با استفاده از گزینه ناظر سفارشی کنید
slow
:
'watchers' => [ Watchers\QueryWatcher::class => [ 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), 'slow' => 50, ], ...],
ردیس ناظر
تماشاگر Redis تمام دستورات Redis اجرا شده توسط برنامه شما را ضبط می کند. اگر از Redis برای کش استفاده می کنید، دستورات کش نیز توسط تماشاگر Redis ضبط می شود.
درخواست ناظر
ناظر درخواست، درخواست، سرصفحه، جلسه و دادههای پاسخ مرتبط با هر درخواستی را که توسط برنامه مدیریت میشود، ثبت میکند. می توانید داده های پاسخ ضبط شده خود را از طریق
size_limit
گزینه (به کیلوبایت) محدود کنید:
'watchers' => [ Watchers\RequestWatcher::class => [ 'enabled' => env('TELESCOPE_REQUEST_WATCHER', true), 'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64), ], ...],
ناظر برنامه
ناظر برنامه فرمان و خروجی هر کار برنامه ریزی شده ای که توسط برنامه شما اجرا می شود را ضبط می کند.
مشاهده Watcher
نمایشگر نام نما ، مسیر، دادهها و "composerان" مورد استفاده در هنگام نمایش نماها را ثبت میکند.
نمایش آواتارهای کاربران
داشبورد تلسکوپ آواتار کاربر را نشان میدهد که در هنگام ذخیره یک ورودی مشخص شده احراز هویت شده است. به طور پیش فرض، تلسکوپ آواتارها را با استفاده از وب سرویس Gravatar بازیابی می کند. با این حال، میتوانید URL آواتار را با ثبت پاسخ تماس در
App\Providers\TelescopeServiceProvider
کلاس خود سفارشی کنید. پاسخ تماس، شناسه و آدرس ایمیل کاربر را دریافت میکند و باید نشانی اینترنتی تصویر آواتار کاربر را برگرداند:
use App\Models\User;use Laravel\Telescope\Telescope; /** * Register any application services. */public function register(): void{ // ... Telescope::avatar(function (string $id, string $email) { return '/avatars/'.User::find($id)->avatar_path; });}