Slim研读笔记七乱入篇之Monolog(上)

来源:互联网 发布:爱知流量计官网 编辑:程序博客网 时间:2024/06/05 00:31

最近两天,我的同事小涛涛因开发需要,急需一个日志系统来记录日志。所以,从这节开始我们讲解Monolog,深入理解下Monolog的使用方式与实现原理。在开始研读之前,我们需要理清二个概念异常和错误。

异常

异常是Exception类的对象,在遇到无法修复的状况时抛出(例如,远程 API 无响应,数据库查询失败等),我们称这些状况为异常状况。
Exception 对象与其他任何 PHP 对象一样,使用 new 关键字实例化,Exception 对象有两个主要的属性:一个是消息,一个是数字代码。消息用于描述出现的问题,数字代码是可选的,用于为指定的异常提供上下文,实例化 Exception 对象时可以像下面这样设定消息和可选的数字代码:
$exception = new Exception('Danger, Will Robinson!', 100);
我们可以使用公开的实例化方法 getCode() 和 getMessage() 获取 Exception 对象的这两个属性:
$code = $exception->getCode();$message = $exception->getMessage();
打印该异常对象可看到这样的结果

异常还提供了其他公共方法,比如获取异常文件、行,异常跟踪等。

PHP曾给出一系列异常处理类,但通过这些异常处理类我们就可以处理所有的异常程序了吗?答案是不可能的,但PHP允许我们注册一个全局异常处理程序,用于捕获所有未处理的异常。异常处理程序使用set_exception_handler()函数注册。

错误

除了异常之外,PHP 还提供了用于报告错误的函数,PHP 能触发不同级别的错误,如致命错误、运行时错误、编译时错误、启动错误和用户触发的错误等,错误与异常的一个不同点是错误会中断程序的执行。我们平时最常见的错误是由语法错误或未捕获异常导致的错误。
错误和异常的差别很小,如果 PHP 脚本由于某种原因根本无法运行,通常会触发错误。我们还可以使用 trigger_error 函数自己触发错误,然后使用自定义的错误处理程序进行处理,不过,编写运行在用户空间里的代码时最好使用异常。与错误不同的是,PHP 异常可以在 PHP 应用的任何层级抛出和捕获。异常提供的上下文信息比错误多,而且我们可以扩展最顶层的 Exception 类,创建自定义的异常子类。异常加上一个好的日志记录器(如 Monolog)比错误能解决更多的问题。不过,话说回来,现代 PHP 开发者必须能预测并处理 PHP 错误及异常。错误处理程序使用set_error_handler()函数注册。
在生产环境中,我们不会直接在页面显示异常及错误,而是将它们记录到日志,PHP 提供了 error_log() 函数,通过这个函数可以将错误消息写入文件系统或 syslog,还可以通过邮件发送错误消息,不过除此之外,我们还有更好的选择 —— Monolog。让我们开启Monolog之旅吧。






























原创粉丝点击