为你的 PHP 脚本添加可配置的日志
本技巧展示了如何向你的 PHP 脚本添加日志,以及如何添加配置,以便你拥有基本的可配置日志。该 PHP 脚本需要两个 PEAR 包:Log 和 Config。 要使用本技巧中显示的代码,你需要安装 PEAR 以及 PHP,并且需要安装 Log 和 Config PEAR 包。 要安装这两个软件包,请键入
pear install Log Config
配置文件
Config 包支持几种不同的配置源,包括 XML 和标准的 INI 文件格式。 INI 配置文件可以包含一个或多个部分,例如本例中显示的 [Logging] 部分。 这里显示的是一个简单的 INI 文件示例,包含两个用于日志配置的键:log_file 键,其中包含日志文件的完整路径;以及 log_level 键,其中包含将要记录的最低日志级别的字符串表示形式。
[General] # Some configuration values here. [Logging] log_file=C:\path\to\logs\logfile.txt log_level=error
代码
使用这两个包的 PHP 脚本如下所示
parseConfig('C:\\path\\to\\my.ini', 'IniFile'); if (isset($configRoot)) { $settings = $configRoot->toArray(); } else { throw Exception("Unable to load configuration."); } $logfile = $settings['root']['Logging']['log_file']; $loglevel = $settings['root']['Logging']['log_level']; # Create the instance of the logger $logger = &Log::factory('file', $logfile, 'MyScript'); # Transforms the string, 'error' to an integer priority to use for # calculating the mask. $mask = Log::MAX($logger->stringToPriority($loglevel)); # Sets the mask for the logger. $logger->setMask($mask); # Now try logging a bunch of messages to see what happens $logger->debug('My debug message'); $logger->info('My info message'); $logger->notice('My notice message'); $logger->warning('My warning message'); $logger->err('My error message'); $logger->crit('My critical message'); $logger->alert('My alert message'); $logger->emerg('My emergency message'); ?>
结果
运行该脚本后,你将获得以下输出
Nov 20 13:34:58 MyScript [error] My error message Nov 20 13:34:58 MyScript [critical] My critical message Nov 20 13:34:58 MyScript [alert] My alert message Nov 20 13:34:58 MyScript [emergency] My emergency message
工作原理
当脚本运行时,Config 类解析 INI 文件并将 sections 和 keys 放入关联数组结构中。 数组元素 root 始终是根元素,然后 section header 嵌套在 root 中,keys(log_file 和 log_level)与 section header 关联。 要访问 log_file 值,脚本使用
$settings['root']['Logging']['log_file'].
Log::MAX() 方法告诉记录器设置一个掩码,该掩码将屏蔽从调试到最大错误的全部内容。 这将屏蔽任何在优先级上被认为不如错误重要的内容,阻止那些不太重要的消息被写入日志。
为你的 PHP 脚本添加可配置的日志级别可以很好地消除“滚动盲点”,当有太多的日志消息需要筛选时,就会发生这种情况。
有关这些 PEAR 包及更多内容的精彩参考,请获取 Nathan A. Good 和 Allan Kent 的 Foundations of PEAR: Rapid PHP Development。 由 APress 出版。 http://www.apress.com/book/bookDisplay.html?bID=10181。经许可摘录,由 Apress 出版 (ISBN 1-59059-739-7)。
关于作者
Nathan A. Good 住在明尼苏达州双城地区。 他是一名软件开发人员、系统管理员和作者。 他撰写或与他人合著了多本关于开源技术的书籍和文章。
Allan Kent 是一个土生土长的南非人,至今仍然在开普敦生活和工作。 他从事各种语言和不同平台的编程工作已有 20 多年。 他目前是 Saatchi & Saatchi 开普敦的技术主管。
__________________________