承接 zxf/trace 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zxf/trace

最新稳定版本:v1.0.1

Composer 安装命令:

composer require zxf/trace

包简介

系统操作调试

README 文档

README

配置定义【可选】

发布 config/trace.php 配置文件,所有的配置项都可以不定义或者直接不创建配置文件,则会自动使用默认配置项;

php artisan vendor:publish --provider="zxf\Trace\Providers\TraceServiceProvider"

一、数据调试

是否开启trace的调试的判定条件(可查看is_enable_trace函数);

  • 1、cli命令行环境下直接关闭
  • 2、手动定义了 app.trace 配置参数[最高优先级]
    • 如果在 config 文件夹下的 app.php 文件中配置了 trace 参数为 true|false 则使用此配置项;
  • 3、未定义配置的判定;
    • APP_ENV 的配置项 不是 production (生产环境) 或者 开启了调试APP_DEBUG=true
    • 不是 ajax 请求

响应/输出 视图/数据

$title = '个人信息';
$list = [
    'name/姓名' => '张三',
    'age/年龄' => 18,
    'hobbies/爱好' => ['篮球', '音乐'],
    'address/地址' => [
        'city' => '上海',
        'street' => '上海路',
        'zip' => '200000',
    ],
    'birthday/生日' => '2023-01-01',
    'phone' => '13800000000',
    'email' => '1234567890@qq.com',
    'is_active' => false,
];
// 输出 调试html
app('trace')->outputDebugHtml($list, $title);

$code = 200;
$message = '操作成功';
// 响应输出json
app('trace')->respJson($message, $code)->send();
// 响应输出视图
app('trace')->respView($message, $code)->send();

Trace Debug

代码调试

使用辅助函数 trace 进行调整,

// 支持任意个不同类型的参数
trace('this is a test string');
trace(['this is a test array1']);
trace('string',['array1'],['array2'],'string2');

说明: 如果是普通的get请求(非ajax请求),会直接在页面底部展示调试信息; 如果是其他请求的 会记录到 laravel 的本地日志文件中,以日志的方式呈现

Trace Debug

SQL预览

public function test(Request $request)
{
    try {
        DB::beginTransaction();
        DB::table('users')->first();
        DB::commit();
        return '';
    } catch (\Exception $exception) {
        DB::rollback();
        return $this->error([
            'code'    => 500,
            'message' => $exception->getMessage(),
        ]);
    }
}

Trace Debug

异常追踪

public function test(Request $request)
{
    语法异常测试-Syntax anomaly testing
    return 'YOC.CN';
}

Trace Debug

二、Laravel 11+ 优雅接管异常处理

接入

在引导文件bootstrap/app.php中接入异常处理

引入 zxf/trace 包后,默认会自动处理 laravel 的异常;

->withExceptions(function (Exceptions $exceptions): void {
    // 此处可以空着,什么代码都不需要写,zxf/trace 包就会自动处理
    // 仅在需要对某个或某些(例如:[500],[401,500])错误码进行特殊处理(例如401自定义跳转逻辑)或者定义不需要被报告的异常类列表时可自定义处理
})

默认模式

->withExceptions(function (Exceptions $exceptions): void {
   // 异常处理类
   \zxf\Trace\CustomExceptionHandler::handle($exceptions);
})

自定义处理指定错误码

->withExceptions(function (Exceptions $exceptions): void {
    // 接入异常处理类 - 自定义处理部分异常状态码的逻辑
    /**
     * 初始化 Laravel 11+ 异常处理类
     *
     * @param  Exceptions  $exceptions  lv11 + 异常类
     * @param  Closure|null  $customHandleCallback  想要自定义处理的回调函数:回调 ($code, $message);
     * @param  array  $customHandleCode  需要自定义回调处理的错误码;空表示由接管所有的错误码回调处理,不为空表示只接管指定的错误码回调处理;eg: [401], [401,403]
     * @param  array  $dontReport  不需要被报告的异常类列表
     */
    // 接入异常处理类
    \zxf\Trace\CustomExceptionHandler::handle($exceptions, function ($code, $message, $exception) {
            if ($code == 401) {
                return to_route('login');
            }
        }, 
        [401, 403], // 需要自定义处理的异常状态码,为表示处理所有的异常状态码
        [
            // 定义不需要报告的异常类
            // Your\Path\InvalidException::class
        ]
    );
})

异常日志处理

定义好Laravel 默认的日志处理 Illuminate\Support\Facades\Log , 异常日志走定义好的默认渠道,默认渠道记录异常时 才走本地日志渠道stack

use Illuminate\Support\Facades\Log;

// 记录日志
try {
    Log::error($message, $content);
} catch (Throwable $err) {
    // 写入本地文件日志
    Log::channel('stack')->error($message, $content);
}

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-11-14