PHP项目Telescope调试工具详解
Telescope 是 Laravel 生态系统中一个强大的调试和监控工具,主要用于开发阶段的调试和问题排查。

主要功能
-
请求监控
- 记录所有 HTTP 请求
- 查看请求参数、响应内容
- 跟踪请求执行时间
-
数据库查询
- 记录所有 SQL 查询
- 查看查询耗时
- 支持查询参数绑定
-
日志查看
- 集中管理应用日志
- 按级别筛选(debug、info、error 等)
- 实时日志查看
-
异常追踪
- 记录异常信息
- 堆栈跟踪
- 请求上下文
-
邮件监控
- 查看发送的邮件
- 预览邮件内容
- 调试邮件模板
-
队列任务
- 监控队列作业
- 查看执行状态
- 调试失败任务
-
事件和缓存
- 跟踪事件触发
- 缓存操作记录
- Redis 命令监控
安装配置
# 安装 Telescope composer require laravel/telescope --dev # 发布资源 php artisan telescope:install # 运行迁移 php artisan migrate
基础使用示例
// 在控制器中使用
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
// Telescope 会自动记录这个请求
$users = User::where('active', true)
->orderBy('created_at', 'desc')
->get();
// 手动添加标签
app('telescope')->tag('users:list');
return response()->json($users);
}
public function store(Request $request)
{
// 自定义记录
telescope()->record('user_creation', [
'email' => $request->email,
'name' => $request->name
]);
// 添加自定义标签
telescope()->tag(['user_created', 'admin_action']);
$user = User::create($request->validated());
return response()->json($user, 201);
}
}
高级用法
自定义监控
// 创建自定义门面
use Illuminate\Support\Facades\Facade;
class Telescope extends Facade
{
protected static function getFacadeAccessor()
{
return 'telescope';
}
}
// 在代码中使用
Telescope::record('custom_event', [
'user_id' => auth()->id(),
'action' => 'export_data',
'records_count' => 100
]);
条件记录
// 只在特定条件下记录
if (app()->environment('local')) {
telescope()->record('debug_info', [
'memory_usage' => memory_get_usage(true),
'execution_time' => microtime(true) - LARAVEL_START
]);
}
自定义标签和过滤
// 配置文件 config/telescope.php
return [
'watchers' => [
Watchers\RequestWatcher::class => [
'enabled' => env('TELESCOPE_ENABLED', true),
'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64),
],
// 可以禁用某些 Watcher
Watchers\DumpWatcher::class => false,
],
// 标签过滤器
'tag_filter' => [
'App\\' => true,
'auth' => true,
],
];
实际应用场景
场景1:调试 API 请求
// API 控制器
class ApiController extends Controller
{
public function complexOperation(Request $request)
{
// Telescope 会自动记录所有数据库查询
$result = DB::transaction(function () use ($request) {
// 复杂业务逻辑
$user = User::findOrFail($request->user_id);
$order = Order::create([...]);
// 查看生成的 SQL 和性能
return compact('user', 'order');
});
return response()->json($result);
}
}
场景2:邮件调试
// 查看邮件发送情况 Mail::to($user->email)->send(new OrderConfirmation($order)); // Telescope 会记录邮件内容,无需实际发送
安全配置
// 生产环境配置
'gate' => [
'enabled' => true,
'email' => ['admin@example.com'], // 仅允许特定用户访问
'ips' => ['127.0.0.1'], // 仅允许本地 IP
],
// 或在 AppServiceProvider 中
use Laravel\Telescope\Telescope;
public function boot()
{
Telescope::auth(function ($request) {
return $request->user() &&
$request->user()->isAdmin();
});
}
性能优化建议
-
仅开发环境启用
# .env 文件 TELESCOPE_ENABLED=false # 生产环境禁用
-
限制记录数量
// config/telescope.php 'storage' => [ 'count' => 1000, // 保留最近1000条记录 ], -
清理旧数据
# 定期清理 php artisan telescope:prune --days=7
最佳实践
-
结合调试辅助函数
// 使用 dd() 和 dump() dd($variable); // Telescope 会捕获 dump($variable); // 在 Telescope 中查看
-
使用标签分类
// 按业务模块标记 telescope()->tag(['payment', 'failed_transaction']); telescope()->tag(['auth', 'login_attempt']);
-
监控关键操作
// 记录重要操作 public function criticalOperation() { telescope()->record('critical_action', [ 'timestamp' => now(), 'user' => auth()->user()->email, 'action' => 'delete_user', 'target' => $userId ]); }
Telescope 是 Laravel 开发的得力助手,合理使用可以显著提高开发和调试效率,记住在生产环境谨慎使用,避免性能影响和数据泄露风险。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播