0

0

laravel报错怎么排查

WBOY

WBOY

发布时间:2023-05-26 14:49:07

|

921人浏览过

|

来源于php中文网

原创

在使用laravel框架进行开发过程中,难免会出现各种错误或异常。如何快速排查错误并解决问题,是基础开发者面临的挑战。本文将为您介绍laravel报错的排查方法,帮助您在开发过程中事半功倍。

一、日志记录

Laravel会将日志信息按照不同等级(debug、info、notice、warning、error、critical、alert、emergency)分别记录在不同文件中。我们可以通过查看日志文件来快速找出代码中出现的错误。

1.1 查看日志文件

打开项目根目录中的storage/logs目录,可以看到laravel.log文件,这个是系统所有级别日志 的总日志文件,如果想以某种级别来分集日志记录,可在config/logging.php 文件中进行配置;

在日志文件中,可以针对时间、进程、级别等条件进行筛选查看错误信息。具体使用方式如下:

tail -f storage/logs/laravel.log // 监控最新的日志内容,按Ctrl+C停止
cat storage/logs/laravel.log | grep '关键字' // 搜索包含"关键字"的日志内容
tail -n 100 storage/logs/laravel.log | grep '关键字' // 查看最后100行日志是否包含"关键字"

1.2 级别设置

通过 Laravel 自带的目录 app/Exceptions/Handler.php 类,可以看到日志的级别设置在了 report() 函数的第一个参数中,Laravel 默认的日志级别为 error,这意味着,只有 error 级别及以上的日志会被记录在 app/public/storage/logs/laravel.log 日志文件中。

如果想要将 warning 级别及以上的日志都写入日志文件,可以在report() 函数的第一个参数中添加起始级别,如下所示:

public function report(Exception $exception)
{
    if ($this->shouldReport($exception)) {
        Log::channel('daily')->warning('遇到错误啦!', [
            'error' => $exception->getMessage()
        ]);
    }

    parent::report($exception);
}

通过Log::channel('daily')->warning()操作,将错误信息与级别一起写入日志,并通过shouldReport() 方法判断是否需要写入日志。

二、异常处理

在Laravel应用中,抛出自定义异常的方式非常简单,只需进行以下操作即可:

2.1 自定义异常

创建一个新的异常类,并继承Laravel默认的Exception类,如下所示:

淘源码商城PHP淘宝查信誉
淘源码商城PHP淘宝查信誉

淘宝上现在有在卖的版本,大部分查询是调用其他站的,账户具体点数查询错误,其他查询,如排名等都是调用其他站的,调用站没问题,那么就没问题

下载
namespace AppExceptions;
use Exception;

class CustomException extends Exception
{
    public function __construct($message = null, $code = 0)
    {
        parent::__construct($message, $code); // 调用父类的构造方法
    }
     public function report()
    {
        // 记录错误日志 
        Log::error('CustomException:'.$this->getMessage());
    }

    public function render($request)
    {
        return response()->json(['message' => $this->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
    }
}

在构造方法中,我们可以定义异常信息及状态码,并在 report() 方法中记录错误日志,在 render() 方法中返回JSON格式的异常信息及状态码。

当应用程序中出现了 CustomException时,Laravel会自动执行 report() 方法将错误信息记录到日志文件中,并通过 render() 方法返回异常信息给前端显示。

2.2 触发异常

在代码中使用 throw new CustomException ()方法即可抛出异常,如下所示:

public function test(Request $request)
{
    // ...
    if (! check_validate($request->all())) {
        throw new CustomException('请求参数不正确');
    } 
}

三、错误调试

在进行开发或测试时,有时需要在代码中打出调试信息来方便查找问题所在,而在 Laravel 中,我们可以通过 dump() 和 dd() 两个函数来快速输出调试信息和中断程序执行结果。

3.1 dump()和dd()

dump() 函数用于打印变量或者数组的内容,不会中断程序的运行。类似于PHP内置的var_dump()函数。

dd() 函数不仅会打印变量或者数组的内容,还会中断程序的执行,并且把处理到当前位置的代码堆栈以及异常的具体信息都显示出来。类似于PHP内置die() 或exit()函数。

Route::get('/test', function () {
    dump('Hello Laravel!');
    return response()->json(['key' => 'value']);
});

Route::get('/test2', function () {
    $array = ['key_one' => 'value_one', 'key_two' => 'value_two'];
    dd($array);
    return response()->json(['key' => 'value']);
});

在上述代码中,我们通过 dump() 和 dd() 方法来打印字符串和数组的内容,使用方式类似于PHP原生函数,非常方便。

四、结语

在Laravel开发过程中,由于各种原因,总会出现各种各样的报错信息。如何高效地排查并解决这些错误,是每个开发者必须面对的问题。本文中我们介绍了Laravel日志记录、异常处理、错误调试等几个常用的排查方式,希望对您在Laravel中开发有所帮助。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

322

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

281

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

456

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

375

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

106

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

72

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

68

2025.08.05

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

425

2023.08.07

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

61

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号