错误与日志

配置文件

日志处理程序注册在启动文件 app/start/global.php 文件里面。日志都默认储存在一个单独的文件中,您可以依照实际需求自定义日志。因为 Laravel 使用了非常流行的 Monolog 日志库,您可以利用 Monolog 提供的多种方式管理你的日志。

例如,如果您想每天使用一个文件记录日志而不是使用单独的庞大文件,您可以照着下面的例子更改开始配置文件:$logFile = 'laravel.log';

Log::useDailyFiles(storage_path().'/logs/'.$logFile);

错误显示

错误显示默认为开启,意味着当错误发生时,将有错误页面显示详细的调用追踪和错误信息。您可以关掉错误显示的选项,把app/config/app.php里的debug选项改成false。注意:强烈建议在生产环境中关掉错误显示。

错误处理

app/start/global.php里默认有一个处理所有异常的异常处理程序:App::error(function(Exception $exception)

{

Log::error($exception);

});

这是最基本的异常处理程序,然而您可以依照需求设定更多异常处理程序。异常处理程序会依照异常的类型提示( type-hint )被调用。例如,您可以创造一个只处理RuntimeException的异常处理程序:App::error(function(RuntimeException $exception)

{

// Handle the exception...

});

如果异常处理程序回传一个 response,response 会直接回传到浏览器,而其他异常处理程序将不会被调用:App::error(function(InvalidUserException $exception)

{

Log::error($exception);

return 'Sorry! Something is wrong with this account!';

});

为了监听 PHP fetal errors,您可以利用App::fatal方法:App::fatal(function($exception)

{

//

});

如果您有很多异常处理程序,他们应该依照从最通用到最特定的顺序被定义。例如,一个对应处理类型为Exception的异常处理程序,应该被定义在一个对应处理自定义异常类型,如Illuminate\Encryption\DecryptException的异常处理程序之前。

何处定义异常处理程序

默认上没有注册异常处理程序的地方。Laravel 可以让您自由设定。选择之一是定义程序在 start/global.php中,一般来说,这是一个让您方便写入任何"bootstrapping" 代码的地方。如果文件变得很拥挤,可以建立一个 app/errors.php文件,并且在start/global.php中引入。第三个选择是建立 service provider 以注册程序。再一次强调,这个问题并没有正确的答案,您直接选择一个让您觉得舒适的地方注册异常处理程序即可。

HTTP 异常处理

一些异常处理表示来自服务器的 HTTP 错误码,例如可能是「找不到页面」错误(404),未授权错误(401),或甚至是工程师导致的500错误。使用下列方法以回传这些回应:App::abort(404);

或是您可以选择提供一个回应:App::abort(403, 'Unauthorized action.');

您可以在请求回应的生命周期中任何时间点使用这个方法。

404错误处理

您可以注册一个错误处理程序处理所有"404 Not Found"错误,让您可以简单的回传自定义的404错误页面。App::missing(function($exception)

{

return Response::view('errors.missing', array(), 404);

});

日志

Laravel 提供一个建立在强大的 Monolog 上的日志工具。Laravel 默认设定在应用程序里建立单一日志文件,这个文件储存在app/storage/logs/laravel.log。 您可以像下面这样写入信息:Log::info('This is some useful information.');

Log::warning('Something could be going wrong.');

Log::error('Something is really going wrong.');

日志工具提供了七种定义在 RFC 5424 的级别:debug, info, notice, warning, error, critical, and alert

可以在传入上下文相关的数组到 log 的方法里:Log::info('Log message', array('context' => 'Other helpful information'));

Monolog 提供很多额外的方法可以记录。若有需要,您可以使用 Laravel 里使用的 Monolog 实例:$monolog = Log::getMonolog();

您可以注册事件捕捉所有传到日志的信息:

注册日志监听程序Log::listen(function($level, $message, $context)

{

//

});

php错误日志框架,错误与日志 - Laravel - 为 WEB 艺术家创造的 PHP 框架。相关推荐

  1. php mail laravel,邮件 - Laravel - 为 WEB 艺术家创造的 PHP 框架。

    邮件 配置 Laravel的邮件功能构建于流行的SwiftMailer库之上,并提供了简介.高效的API.邮件配置信息在app/config/mail.php文件中,并提供了包含SMTP主机.端口和证 ...

  2. Laravel和Thinkphp有什么区别,哪个框架好用

    Laravel和Thinkphp这两个php框架对于php程序员都不陌生,新手可能对Thinkphp比较熟,也是国内比较出名的开源框架,更高级的Laravel一般有点经验的才使用. TP框架: Thi ...

  3. log4j 程序日志_Log4j错误–减慢您的应用程序

    log4j 程序日志 最近,我们正在对流行的SaaS应用程序进行故障排除. 该应用程序间歇性地变慢. 要从问题中恢复,必须重新启动应用程序. 在高流量期间,此应用有时会变慢. 有时在交通繁忙时也是如此 ...

  4. springboot 控制台输出错误信息_springboot(6)——整合日志

    概述 我们在平时开发项目的时候想知道程序运行情况一般可以使用sysout.print();打印一些关键的代码或者通过debug查看运行状态,但是对于这种sysout.print();很现任出现代码多余 ...

  5. java基础巩固-宇宙第一AiYWM:为了维持生计,做项目经验之~SSM项目错误集锦Part3(项目蹦+pg数据库坏+100%-->线上故障排查经验【业务bug第一步一定是先看日志,写好日志】)~整起

    项目中遇到的一个问题:项目忽然蹦了,用我们的域名登陆不上去了. 根据之前的经验,一般比如我们项目登不上去了或者数据库不上数据了(数据不更新),直接在Xshell上远程reboot一下,再重启一下tom ...

  6. thinkphp 源码分析(四)—— 错误和异常处理 以及 log 日志

    0x01 前言 本来是这样的,继续是smile 师傅的那篇文章,文章中提到了可以用包含日志, 但是一开始我输入: http://127.0.0.1/public/index.php/index/ind ...

  7. mysql5.6 错误日志_MySQL5.6.36 日志文件之错误日志,二进制日志,慢日志

    (一)错误日志配置 vim /etc/my.cnf log-error=/var/log/mysql.log 查找错误日志位置 show variables like '%log_error%' 一般 ...

  8. 如何分析apache日志[access_log(访问日志)和error_log(错误日志)]

    如何分析apache日志[access_log(访问日志)和error_log(错误日志)] 发布时间: 2013-12-17 浏览次数:205 分类: 服务器 默认Apache运行会access_l ...

  9. Redis的Errorlog或者启动日志(错误日志)的配置

    Errorlog或者是运行日志是任何一个软件的运行中异常诊断必看的文件之一,折腾Redis的过程中以为有默认的错误日志(或启动日志),不过一直没有发现类似的日志文件, 在看了默认的配置文件之后,发现R ...

  10. 华为服务器提示错误信息,服务器错误日志

    服务器错误日志 内容精选 换一换 为加强对数据的容灾管理,云堡垒机支持手动备份和配置日志远程备份,提高审计数据安全性和系统可扩展性.通过手动导出/下载各功能模块数据文件保存在本地,可手动备份日志请参见 ...

最新文章

  1. json对象转为url参数_Day48_Ajaxamp;Json
  2. 5g信号云端服务器,随着5G万物互联的到来,云服务器迎来新机遇
  3. AI领域3种典型的深度学习算法
  4. 成功解决A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,co
  5. 众星出席2018—2019中国文娱金数据发布盛典
  6. 手机空间定位_你或许被默默定位很久了却不知情,盘点生活中各类定位技术
  7. static class 静态类(Java)
  8. 密码学专题 文本数据库
  9. Hibernate @JoinTable 注解
  10. Python机器学习:多项式回归与模型泛化005学习曲线
  11. android 拍摄二维码图片 变形矫正_鼻中隔先天偏曲矫正特殊案例——我为何给她做了两次手术...
  12. windows笔记-【内核对象线程同步】概述
  13. 登录,注册,个人信息,退出的隐藏和出现
  14. 查看别人IP经典办法
  15. uniapp APP 接入萤石云
  16. 非正态分布数据转换成正态分布
  17. spark:报错com.esotericsoftware.kryo.KryoException: Buffer underflow.
  18. Ubuntu系统升级后无法进入系统
  19. 蓝桥杯B组初赛2019
  20. LoRa节点如何以OTAA方式入网TTN服务器?

热门文章

  1. 深入理解Oracle Exadata
  2. 关于对网络学习方法的一点见解
  3. extjs修改页面的内容关键问题
  4. 7.剑指Offer --- 两个面试案例
  5. 9.GitLab 汉化
  6. 133. array_map()
  7. jquery使用规则
  8. [2019杭电多校第四场][hdu6623]Minimal Power of Prime
  9. MySQL学习之一数据库简介
  10. 【BZOJ】1001: [BeiJing2006]狼抓兔子 Dinic算法求解平面图对偶图-最小割