首页 理论教育PHPMVC开发实战:应用日志的重要性和record方法

PHPMVC开发实战:应用日志的重要性和record方法

【摘要】:应用日志是在MVC应用中开发人员手动记录的日志。手动记录可以将需要记录的信息保存到日志系统中,方便在系统出错时能够第一时间排查故障所在。手动记录日志虽然麻烦,但却是保证网站稳定、安全运行的关键,所以在实际应用开发中,应该要养成良好的日志记录习惯,无论对于系统维护人员还是后期的网站维护人员都是友好并重要的。record方法record方法用于定义日志,例如日志的信息、级别等。

应用日志是在MVC应用中开发人员手动记录的日志。手动记录可以将需要记录的信息保存到日志系统中,方便在系统出错时能够第一时间排查故障所在。手动记录日志虽然麻烦,但却是保证网站稳定、安全运行的关键,所以在实际应用开发中,应该要养成良好的日志记录习惯,无论对于系统维护人员还是后期的网站维护人员都是友好并重要的。

Log类提供了两种手动记录日志的方式:一种为立即写入;另一种分步写入。无论哪一种方式,对于开发人员而言都是简单易用的。下面分别介绍。

1.立即写入

立即写入是一种比较传统的日志记录方式,如果使用FILE记录方式,立即写入就等于写文件操作。立即写入使用write静态方法实现,该方法共有5个参数,表现形式为Log::write($message,$level,$type='',$destination='',$extra=''),参数作用如表8-6所示。

表8-6 write静态方法参数

978-7-111-42852-7-Part02-326.jpg

除了参数message是必选项之外,其余参数都为可选项。所以最简单的手动记录日志代码如下所示。

978-7-111-42852-7-Part02-327.jpg

2.分步写入

分步写入可以在一定程度上解决立即写入导致IO开销过大的问题。分步写入最大的特点是首先将日志信息暂存内存,在这一过程中程序的运行不受影响,由于可以避免CURD操作繁忙阶段,所以分步写入效率更加高。分步写入共分为两个步骤。首先使用record方法将日志写到内存中,直到开发人员手动调用save方法时日志信息才最终被永久保存。

(1)record方法(www.chuimin.cn)

record方法用于定义日志,例如日志的信息、级别等。record将收集到的信息保存到数组中,在这一过程中数组中的信息是临时性的,程序可以继续运行,也可以继续往数组中添加日志信息。record方法共支持3个参数,表现形式为record($message,$level=self::ERR,$record=false)。改变record方法参数值,可以改变日志的记录方式,如表8-7所示。

表8-7 record方法参数

978-7-111-42852-7-Part02-328.jpg

(2)save方法

save方法不允许单独使用,需要配合record方法一起使用。一旦调用save方法,日志将会立即执行保存功能,该方法支持3个参数,表现形式为Log::save($type='',$destination='',$extra=''),参数值如表8-8所示。

表8-8 save方法参数

978-7-111-42852-7-Part02-329.jpg

因为分步写入日志是首先暂时存放的,这就意味着一次可以写入多条日志记录,如以下代码所示。

978-7-111-42852-7-Part02-330.jpg

ThinkPHP提供的日志功能比较传统,但开发人员可以重写Log类实现更加完善的日志系统。例如将日志保存到数据库、Memcache、消息队列、分布式文件系统、数据云中等,这些都可以通过重写Log类实现。当然更简单的方法是通过系统提供的扩展机制来实现,关于扩展功能的介绍,本书第11章将会全面介绍。