Laravel 5.7 如何使用 URL 记录 404

2024-01-16

我想在 Laravel 5.7 中记录 404 错误,但我不明白如何打开它。除了记录 404 错误之外,我还想记录所请求的 URL。其他错误已正确记录。

.env

APP_DEBUG=true
LOG_CHANNEL=stack

配置/logging.php

'stack' => [
    'driver' => 'stack',
    'channels' => ['daily'],
],

Per the 错误处理文档 https://laravel.com/docs/5.7/errors:

异常处理程序的 $dontReport 属性包含一个数组 不会记录的异常类型。例如,异常 由 404 错误以及其他几种类型的错误导致, 不会写入您的日志文件。您可以添加其他异常类型 根据需要添加到该数组:

In app/Exceptions/Handler the $dontReport数组为空。

我通过 Blade 文件自定义了 404 视图resources/views/errors/404.blade.php

基于这个答案 https://stackoverflow.com/questions/52261128/laravel-5-7-error-404-handling-page-location/52262132我已经尝试过这段代码app/Exceptions/Handler,但日志中没有显示任何内容:

public function report(Exception $exception)
{
    if ($this->isHttpException($exception)) {
        if ($exception instanceof NotFoundHttpException) {
            Log::warning($message);
            return response()->view('error.404', [], 404);
        }
        return $this->renderHttpException($exception);
    }

    parent::report($exception);
}

接受 Mozammil 的答案后进行更新,效果很好。我已将他的回答缩短为以下内容。别忘了添加use Illuminate\Support\Facades\Log到处理程序文件。

public function render($request, Exception $exception)
{
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
        Log::warning('404: ' . $request->url());
        return response()->view('errors.404', [], 404);
    }
    return parent::render($request, $exception);
}

我有类似的要求。这是我实现这一目标的方法。

我有一个辅助方法来确定它是否是 404。

private function is404($exception)
{
    return $exception instanceof \Illuminate\Database\Eloquent\ModelNotFoundException
            || $exception instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
}

我还有另一种方法来实际记录 404。

private function log404($request) 
{
    $error = [
        'url'    => $request->url(),
        'method' => $request->method(),
        'data'   => $request->all(),
    ];

    $message = '404: ' . $error['url'] . "\n" . json_encode($error, JSON_PRETTY_PRINT);

    Log::debug($message);
}

然后,为了记录错误,我只需在render() method:

public function render($request, Exception $exception)
{
    if($this->is404($exception)) {
        $this->log404($request);
    }

    return parent::render($request, $exception);
}

我不知道$internalDontReport。然而,在所有情况下,我的实施都对我有用:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.7 如何使用 URL 记录 404 的相关文章

  • Laravel Sanctum + Nuxt JS 我无法通过 CORS

    在开始之前 我想说我搜索并尝试了很多方法 但似乎没有一个能正常工作 我还创建了一个新的 Laravel 安装 但仍然没有成功 问题是 CORS 我总是被 CORS 阻止 该设置使用Laravel Valet Laravel 应用程序运行于h
  • Laravel 中的 PATCH Ajax 请求

    是否可以向 Laravel 发出 Ajax PATCH 请求 或者我是否仅限于 POST Laravel 在输入隐藏字段中使用 PATCH 但是 我没有使用表单元素 只是在单击时 通过 Ajax 请求 应该部分更新记录的按钮 这条路线会是什
  • Laravel 显示“无法清除缓存。请确保您拥有适当的权限”

    Laravel 向我显示 用户 homestead localhost 访问被拒绝 使用密码 YES 一种解决方案是清除缓存和存储的配置缓存 所有这些都使用以下三个命令 php artisan cache clear php artisan
  • Laravel 和 ngrok:路由和资产的 url 域不正确

    我的设置 Mac OSX 上配置了多个站点的 Homestead 我有一个使用 domfit test 作为本地域的站点设置 使用主机更新器自动映射 我的问题 If I vagrant ssh 进而share domfit test我得到了
  • Laravel 模型访问器从缓存中获取 - 性能增强

    我在数据库中有一个项目列表 每个项目都可以选择被否决或赞成 这些投票与其他项目字段一起存储在 MySql 中 例如这样的事情 Schema create items function table table gt increments id
  • Laravel 5 文件下载无效

    使用时Response download下载文件时 我注意到图像和其他二进制文件传输不正确 改变Content Typeheader 没有改变任何东西 也没有明确禁止缓存或强制内容的长度 造成这个问题的原因可能是什么 这个问题的解决方案可以
  • Laravel - 检查 @yield 是否为空

    如果 yield 有内容 是否可以检查刀片视图 我正在尝试在视图中分配页面标题 section title hi world 所以我想检查主布局视图 类似 对于现在 2018 年以上 查看的人 您可以使用 hasSection name y
  • Laravel 在公共文件夹中下载 pdf

    我在公共 下载中有一个pdf文件 我只想链接到它并下载它或在浏览器中打开它 我尝试击打http localhost 8000 downloads brochure pdf在浏览器中 但我只是看到一个没有错误的白屏 在 Chrome DevT
  • node npm run watch 退出状态 3221225725

    我必须格式化我的驱动器 但我的一个项目不再工作 所有其他相同类型的项目都运行良好 这是 Laravel Vue JS 问题是我无法运行 npm run watch dev 或 production 他们都给出了错误 拉拉维尔 5 7 npm
  • Laravel 集合到数组

    我有两个模型 Post and Comment 许多评论属于一个帖子 我正在尝试以数组形式访问与帖子相关的所有评论 我有以下内容 它提供了一个集合 comments collection post gt comments gt get 我该
  • 如何在 Laravel 中更改应用程序的命名空间?

    我无法在 Laravel 5 8 中更改应用程序的命名空间 我正在使用 artisan 来更改它 php artisan app name TestApp 结果是 中没有定义命令app 命名空间 看着php artisan你应该有一个php
  • 作曲家 | laravel 5 - 更新依赖项但框架本身

    我正在为我的项目使用 Laravel 5 的预测试版 我发现 Laravel 5 的应用程序框架在 github 存储库中发生了更改 并且由于它是开发版本 因此预计会经常更改 我的问题是 我可以使用 Composer 只更新特定的依赖项而不
  • Laravel 5 - 更改默认日志位置,将日志文件移至应用程序之外

    如何更改默认日志文件位置
  • 使用键模式从 Laravel 4 缓存中删除?

    对于我的包 我们使用 Laravel 缓存 我们创建的每个缓存键都有前缀 所以我们得到mypackage config mypackage md5ofafilename有时我需要刷新我的包创建的所有缓存文件 问题是什么 我只知道缓存键的模式
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 在 Eloquent 中定义自定义属性

    我的数据库中有 3 个不同的字段 city state country 如何在 Eloquent 中定义另一个属性以从这 3 个字段返回一个字符串 第一种方法 但不起作用 protected address public function
  • AWS-PHP-SDK / SNS 直接寻址返回错误

    您好 我正在使用 Laravel 4 设置来利用 AWS SNS 向我的 iOS 设备发送推送消息 从 AWS 控制台向我的设备发布命令效果很好 然后我尝试从 PHP sns AWS get sns sns gt publish array
  • 邮件::队列不工作

    我无法在 laravel 5 4 中对电子邮件进行排队 在之前的 Laravel 5 3 项目中 一切都运行良好 发送仍然有效 Mail send email blank title gt nice content gt message f
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中

随机推荐

  • 如何按特定顺序自动启动程序?

    我的 i3 配置文件中有以下几行 Startup applications exec firefox exec gnome terminal exec nautilus 这些行按预期启动 firefox gnome terminal 和 n
  • Erlang 和带有西里尔字母的二进制

    我需要能够使用其中包含西里尔字符的二进制文件 我尝试只写 lt lt gt gt 但我收到了 badarg 错误 如何在 Erlang 中使用西里尔字母 或 unicode 字符串 如果你想输入上面的表达式erlang shell 请阅读u
  • 使用基于单选按钮值的 javascript(Node JS) 将数据插入 mysql(Sequelize)

    我有下面的 json 对象 phoneno field1 Mohamed field2 123456789 field3 Sameer field1 Ganesh field2 987654321 field3 Pandiyan sende
  • “现代”正则表达式的识别能力

    真正的现代正则表达式实际上可以识别哪一类语言 每当存在带有反向引用的无限长度捕获组时 例如 1 正则表达式现在匹配非常规语言 但这本身并不足以匹配类似的东西S S 匹配括号对的上下文无关语言 递归正则表达式 这对我来说是新的 但我确信 Pe
  • 如何为 NDK 工具链的 gcc 包含

    首先 我上次尝试将c程序编译到linux arm架构时遇到了一个问题 以便稍后在android应用程序中使用它 我成功地做到了这一点 稍后我将写一篇关于如何使用 NDK 独立工具链的文章 现在我终于开始工作了 我正在尝试编译一个 c 文件
  • 画半条无限直线?

    我使用 pyqtgraph 进行数据采集 并且必须在图形视图上表示一些阈值 例如表示高电压限制等 我使用了该类InfiniteLine来自 pyqtgraph 但现在 我必须考虑在采集过程中阈值可能发生的一些变化 它看起来像是两条无限线之间
  • 为什么 Dapper dot net 不自行打开和关闭连接?

    Dapper 隐式地期望连接在使用时打开 为什么它不自己打开和关闭 这不是简单的连接管理吗 我问这个问题是因为我和一位同事一直在反复探讨连接池幕后发生的事情的本质 以及在多个命令中保持连接打开或打开和关闭连接是否有任何好处对于每个命令 Da
  • python中zip档案的流式解压

    有没有办法对单文件 zip 档案进行流式解压缩 我目前在 s3 中有任意大的压缩存档 每个存档一个文件 我希望能够通过迭代来处理文件 而不必实际将文件下载到磁盘或内存中 一个简单的例子 import boto def count newli
  • 在android程序中下载gmail附件

    我尝试了很多搜索 最后在这里问 我需要写一段代码下载附件形成我的GMail 我怎样才能做到这一点 到目前为止 我可以阅读 发送电子邮件 但仍在弄清楚如何下载附件 任何帮助将不胜感激 附件不单独下载 它们是 MIME 多部分文档的一部分 您可
  • 使用 HTTParty 捕获特定请求

    我想在不使用代理的情况下捕获给定操作的完整请求 raw request 通过网络传输的内容 我知道类上的 debug output 方法 这可能是解决方案的一部分 但不清楚如何根据每个请求进行设置 考虑以下 response HTTPart
  • 黑莓中的正则表达式?

    如何在 Blackberry 中使用正则表达式验证电子邮件 Blackberry API 中没有 Pattern 类 有没有其他方法可以验证 谢谢 当前的 Blackberry API 中没有正则表达式 尝试这个 http code goo
  • 具有可变参数的回调函数 tkinter 按钮[重复]

    这个问题在这里已经有答案了 from tkinter import F Tk i 1 while i lt 10 newButton Button F text Show Number command lambda showNumber i
  • Python:Ramer-Douglas-Peucker(RDP)算法,用点数代替 epsilon

    我想修改以下 python 脚本RDP算法 https en wikipedia org wiki Ramer E2 80 93Douglas E2 80 93Peucker algorithm目的是不使用 epsilon 而是选择我想在决
  • 方案没有文件系统:cos

    我正在尝试从 IBM Data Science Experience 连接到 IBM Cloud Object Storage access key XXX secret key XXX bucket mybucket host lon i
  • 如何在 Azure 逻辑应用程序中使用 OAuth 2.0 身份验证?

    我正在尝试创建一个带有 FTP 触发器的简单逻辑应用程序 然后将任何上传的文件内容通过管道传输到我在 Azure 中托管并使用 OAuth 2 0 客户端凭据授予流进行保护的 Web API 如何在逻辑应用中配置 OAuth 2 0 身份验
  • 在 NestJS 微服务中公开正常的 http 端点

    我用 NestJs 编写了这个微服务 async function bootstrap const port parseInt process env PORT 5000 10 const app await NestFactory cre
  • 为什么一种形式的最后一个元素与第二种形式的第一个元素之间存在间隙?

    我有这个 html 文件 margin 0 padding 0 box sizing border box body margin 0 background ff5 form display inline nick msg backgrou
  • 多线程:线程多于内核有什么意义?

    我认为多核计算机的要点在于它可以同时运行多个线程 那么 如果你有一台四核机器 那么同时运行超过 4 个线程有什么意义呢 他们不会只是互相窃取时间 CPU 资源 吗 答案围绕线程的目的 即并行性 同时运行多个单独的执行行 在 理想 系统中 每
  • AngularJs 服务、文件上传、Laravel

    我在处理 XHR 请求时遇到问题 由于某种原因我的服务器未收到我的文件 这是我的角度服务更新算法 var update function id name file var formData new FormData formData app
  • Laravel 5.7 如何使用 URL 记录 404

    我想在 Laravel 5 7 中记录 404 错误 但我不明白如何打开它 除了记录 404 错误之外 我还想记录所请求的 URL 其他错误已正确记录 env APP DEBUG true LOG CHANNEL stack 配置 logg