نسخه:

تلسکوپ لاراول

معرفی

تلسکوپ لاراول یک دستیار اشکال زدایی زیبا برای چارچوب لاراول است. تلسکوپ بینشی در مورد درخواست‌هایی که به برنامه شما وارد می‌شوند، استثناها، ورودی‌های گزارش، پرس‌وجوهای پایگاه داده، کارهای در صف، نامه‌ها، اعلان‌ها، عملیات حافظه پنهان، وظایف برنامه‌ریزی‌شده، تخلیه‌های متغیر و موارد دیگر را ارائه می‌دهد. تلسکوپ یک همراه فوق العاده برای محیط توسعه لاراول محلی شما می سازد.

نصب و راه اندازی

می توانید از Composer برای نصب تلسکوپ در پروژه لاراول خود استفاده کنید:

composer require laravel/telescope "^3.0"

پس از نصب تلسکوپ، دارایی های آن را با استفاده از telescope:install دستور Artisan منتشر کنید. پس از نصب تلسکوپ، باید migrate دستور زیر را نیز اجرا کنید:

php artisan telescope:install
 
php artisan migrate

نصب فقط در محیط های خاص

اگر قصد دارید فقط از تلسکوپ برای کمک به توسعه محلی خود استفاده کنید، می توانید تلسکوپ را با استفاده از --dev پرچم نصب کنید:

composer require laravel/telescope "^3.0" --dev

پس از اجرا telescope:install ، باید ثبت نام ارائه دهنده خدمات را از فایل پیکربندی TelescopeServiceProvider خود حذف کنید. app در عوض، ارائه‌دهنده خدمات را به register روش زیر به صورت دستی ثبت کنید AppServiceProvider :

/**
* Register any application services.
*
* @return void
*/
public function register()
{
if ($this->app->isLocal()) {
$this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
$this->app->register(TelescopeServiceProvider::class);
}
}

همچنین باید با افزودن موارد زیر به فایل خود از کشف خودکار بسته تلسکوپ جلوگیری کنید composer.json :

"extra": {
"laravel": {
"dont-discover": [
"laravel/telescope"
]
}
},

سفارشی سازی مهاجرت

اگر نمی‌خواهید از مهاجرت‌های پیش‌فرض تلسکوپ استفاده کنید، باید Telescope::ignoreMigrations متد موجود در register متد خود را فراخوانی کنید AppServiceProvider . شما می توانید مهاجرت های پیش فرض را با استفاده از php artisan vendor:publish --tag=telescope-migrations دستور صادر کنید.

پیکربندی

پس از انتشار دارایی های تلسکوپ، فایل پیکربندی اولیه آن در config/telescope.php . این فایل پیکربندی به شما این امکان را می دهد که گزینه های تماشاگر خود را پیکربندی کنید و هر گزینه پیکربندی شامل شرحی از هدف خود است، بنابراین حتما این فایل را به طور کامل بررسی کنید.

در صورت تمایل، می توانید مجموعه داده های تلسکوپ را به طور کامل با استفاده از enabled گزینه پیکربندی غیرفعال کنید:

'enabled' => env('TELESCOPE_ENABLED', true),

هرس داده ها

بدون هرس، telescope_entries جدول می تواند رکوردها را خیلی سریع جمع آوری کند. برای کاهش این مشکل، باید telescope:prune دستور Artisan را برای اجرای روزانه برنامه ریزی کنید:

$schedule->command('telescope:prune')->daily();

به طور پیش‌فرض، تمام ورودی‌های قدیمی‌تر از 24 ساعت هرس می‌شوند. می‌توانید hours هنگام فراخوانی فرمان برای تعیین مدت زمان نگهداری داده‌های تلسکوپ از این گزینه استفاده کنید. به عنوان مثال، دستور زیر تمام رکوردهای ایجاد شده بیش از 48 ساعت قبل را حذف می کند:

$schedule->command('telescope:prune --hours=48')->daily();

مجوز داشبورد

تلسکوپ یک داشبورد را در /telescope . به طور پیش فرض، شما فقط می توانید در local محیط به این داشبورد دسترسی داشته باشید. در فایل شما app/Providers/TelescopeServiceProvider.php ، یک روش وجود دارد gate . این دروازه مجوز دسترسی به تلسکوپ را در محیط های غیر محلی کنترل می کند . شما آزاد هستید که در صورت نیاز این گیت را تغییر دهید تا دسترسی به نصب تلسکوپ خود را محدود کنید:

/**
* Register the Telescope gate.
*
* This gate determines who can access Telescope in non-local environments.
*
* @return void
*/
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
return in_array($user->email, [
'taylor@laravel.com',
]);
});
}

APP_ENV شما باید اطمینان حاصل کنید که متغیر محیط خود را production در محیط تولید خود تغییر داده اید. در غیر این صورت، نصب تلسکوپ شما برای عموم در دسترس خواهد بود.

ارتقاء تلسکوپ

هنگام ارتقاء به نسخه اصلی جدید تلسکوپ، مهم است که راهنمای ارتقا را به دقت مرور کنید .

علاوه بر این، هنگام ارتقاء به هر نسخه جدید تلسکوپ، باید دارایی های تلسکوپ را مجدداً منتشر کنید:

php artisan telescope:publish

برای به روز نگه داشتن دارایی ها و جلوگیری از مشکلات در به روز رسانی های بعدی، می توانید این telescope:publish دستور را به post-update-cmd اسکریپت های فایل برنامه خود اضافه کنید composer.json :

{
"scripts": {
"post-update-cmd": [
"@php artisan telescope:publish --ansi"
]
}
}

فیلتر کردن

ورودی های

می‌توانید داده‌هایی را که توسط تلسکوپ ضبط می‌شود از طریق filter تماس برگشتی که در شما ثبت شده است فیلتر کنید TelescopeServiceProvider . به طور پیش‌فرض، این فراخوان تمام داده‌های موجود در local محیط و استثناها، کارهای ناموفق، کارهای زمان‌بندی شده و داده‌ها را با برچسب‌های نظارت شده در همه محیط‌های دیگر ثبت می‌کند:

/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->hideSensitiveRequestDetails();
 
Telescope::filter(function (IncomingEntry $entry) {
if ($this->app->isLocal()) {
return true;
}
 
return $entry->isReportableException() ||
$entry->isFailedJob() ||
$entry->isScheduledTask() ||
$entry->hasMonitoredTag();
});
}

دسته ها

در حالی که filter پاسخ به تماس، داده‌ها را برای ورودی‌های جداگانه فیلتر می‌کند، می‌توانید از filterBatch روشی برای ثبت تماس پاسخی استفاده کنید که تمام داده‌ها را برای یک درخواست یا دستور کنسول فیلتر می‌کند. اگر تماس برگشتی برگردد true ، همه ورودی‌ها توسط تلسکوپ ضبط می‌شوند:

use Illuminate\Support\Collection;
 
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->hideSensitiveRequestDetails();
 
Telescope::filterBatch(function (Collection $entries) {
if ($this->app->isLocal()) {
return true;
}
 
return $entries->contains(function ($entry) {
return $entry->isReportableException() ||
$entry->isFailedJob() ||
$entry->isScheduledTask() ||
$entry->hasMonitoredTag();
});
});
}

برچسب زدن

تلسکوپ به شما امکان می دهد تا ورودی ها را با "برچسب" جستجو کنید. اغلب، برچسب‌ها نام کلاس مدل Eloquent یا شناسه‌های کاربری تأیید شده هستند که تلسکوپ به طور خودکار به ورودی‌ها اضافه می‌کند. گاهی اوقات، ممکن است بخواهید برچسب های سفارشی خود را به ورودی ها پیوست کنید. برای انجام این کار، می توانید از Telescope::tag روش استفاده کنید. متد tag یک فراخوانی را می پذیرد که باید آرایه ای از برچسب ها را برگرداند. برچسب‌هایی که توسط تماس برگشت داده می‌شوند با هر برچسبی که تلسکوپ به طور خودکار به ورودی متصل می‌کند ادغام می‌شود. شما باید tag متد را در خود فراخوانی کنید TelescopeServiceProvider :

use Laravel\Telescope\Telescope;
 
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->hideSensitiveRequestDetails();
 
Telescope::tag(function (IncomingEntry $entry) {
if ($entry->type === 'request') {
return ['status:'.$entry->content['response_status']];
}
 
return [];
});
}

دیده بان های موجود

ناظران تلسکوپ هنگام اجرای یک درخواست یا فرمان کنسول، داده های برنامه را جمع آوری می کنند. می‌توانید فهرست ناظرانی را که می‌خواهید در 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 باید در مرورگر باز باشد تا ضبط انجام شود، در غیر این صورت نادیده‌گیری‌ها توسط ناظر نادیده گرفته می‌شوند.

ناظر رویداد

ناظر رویداد، محموله، شنوندگان و داده های پخش را برای هر رویدادی که برنامه شما ارسال می کند، ضبط می کند. رویدادهای داخلی چارچوب لاراول توسط Event Watcher نادیده گرفته می شود.

ناظر استثنایی

ناظر استثنا داده ها و ردیابی پشته را برای هر استثنای قابل گزارشی که توسط برنامه شما ایجاد می شود، ثبت می کند.

نگهبان دروازه

گیت ناظر داده ها و نتایج بررسی های گیت و سیاست را توسط برنامه شما ثبت می کند. اگر می‌خواهید توانایی‌های خاصی را از ضبط شدن توسط تماشاگر حذف کنید، می‌توانید آن‌ها را در ignore_abilities گزینه موجود در config/telescope.php فایل خود مشخص کنید:

'watchers' => [
Watchers\GateWatcher::class => [
'enabled' => env('TELESCOPE_GATE_WATCHER', true),
'ignore_abilities' => ['viewNova'],
],
...
],

ناظر کار

کار ناظر داده ها و وضعیت هر شغل ارسال شده توسط برنامه شما را ثبت می کند.

لاگ ناظر

ناظر گزارش، داده های گزارش را برای هر گزارشی که توسط برنامه شما نوشته شده است، ثبت می کند.

ناظر ایمیل

ناظر نامه به شما امکان می دهد پیش نمایش ایمیل ها را همراه با داده های مرتبط با آنها در مرورگر مشاهده کنید. همچنین می توانید ایمیل را به صورت .eml فایل دانلود کنید.

ناظر مدل

ناظر مدل هر زمان که یک Eloquent created ، updated ، restored ، یا deleted رویداد ارسال شود، تغییرات مدل را ثبت می کند. می‌توانید مشخص کنید که کدام رویدادهای مدل باید از طریق گزینه تماشاگر ثبت شوند events :

'watchers' => [
Watchers\ModelWatcher::class => [
'enabled' => env('TELESCOPE_MODEL_WATCHER', true),
'events' => ['eloquent.created*', 'eloquent.updated*'],
],
...
],

ناظر اعلان

ناظر اعلان ها تمام اعلان های ارسال شده توسط برنامه شما را ثبت می کند. اگر اعلان یک ایمیل را راه‌اندازی کند و نظارت‌کننده ایمیل را فعال کرده باشید، ایمیل برای پیش‌نمایش در صفحه ناظر ایمیل نیز در دسترس خواهد بود.

ناظر پرس و جو

ناظر پرس و جو، SQL خام، اتصالات و زمان اجرا را برای همه پرس و جوهایی که توسط برنامه شما اجرا می شوند را ثبت می کند. ناظر همچنین هر درخواستی با سرعت کمتر از 100 میلی ثانیه را به عنوان برچسب گذاری می کند slow . شما می توانید آستانه پرس و جو کند را با استفاده از گزینه ناظر سفارشی کنید slow :

'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
'slow' => 50,
],
...
],

ردیس ناظر

تماشاگر Redis تمام دستورات Redis اجرا شده توسط برنامه شما را ضبط می کند. اگر از Redis برای کش استفاده می کنید، دستورات کش نیز توسط Redis Watcher ضبط می شود.

درخواست ناظر

ناظر درخواست، درخواست، سرصفحه، جلسه و داده‌های پاسخ مرتبط با هر درخواستی را که توسط برنامه مدیریت می‌شود، ثبت می‌کند. می توانید داده های پاسخ خود را از طریق size_limit گزینه (در KB) محدود کنید:

'watchers' => [
Watchers\RequestWatcher::class => [
'enabled' => env('TELESCOPE_REQUEST_WATCHER', true),
'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64),
],
...
],

ناظر برنامه

ناظر برنامه فرمان و خروجی هر کار برنامه ریزی شده ای که توسط برنامه شما اجرا می شود را ضبط می کند.

نمایش آواتارهای کاربران

داشبورد تلسکوپ، آواتار کاربر را نشان می دهد که در هنگام ذخیره یک ورودی معین وارد سیستم شده است. به طور پیش فرض، تلسکوپ آواتارها را با استفاده از وب سرویس Gravatar بازیابی می کند. با این حال، می‌توانید URL آواتار را با ثبت پاسخ تماس در خود سفارشی کنید TelescopeServiceProvider . پاسخ تماس، شناسه و آدرس ایمیل کاربر را دریافت می‌کند و باید نشانی اینترنتی تصویر آواتار کاربر را برگرداند:

use App\User;
use Laravel\Telescope\Telescope;
 
/**
* Register any application services.
*
* @return void
*/
public function register()
{
Telescope::avatar(function ($id, $email) {
return '/avatars/'.User::find($id)->avatar_path;
});
}