提供了多种日志记录方式,从调试程序到跟踪应用的执行以知足应用的需求。
此组件使用不一样的流适配器来保存日信息。 咱们能够按需使用适配器。支持的适配器以下:php
适配器 | 描述 | 接口 |
---|---|---|
File | 保存日志到普通文件 | Phalcon\Logger\Adapter\File |
Stream | 保存日志到PHP流 | Phalcon\Logger\Adapter\Stream |
Syslog | 保存到系统日志 | Phalcon\Logger\Adapter\Syslog |
Firephp | 发送日志到FirePHP | Phalcon\Logger\Adapter\FirePHP |
下面的例子展现了如何建立日志对象及如何添加日志信息:html
<?php
use Phalcon\Logger\Adapter\File as FileAdapter; $logger = new FileAdapter("app/logs/test.log"); $logger->log("This is a message"); $logger->log("This is an error", \Phalcon\Logger::ERROR); $logger->error("This is another error");
产生的日志信息以下:数据库
[Tue, 17 Apr 12 22:09:02 -0500][DEBUG] This is a message
[Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is an error [Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is another error
保存日志到适配器如文件(文件系统)是很是消耗系统资源的。 为了减小应用性能上的开销,咱们可使用日志事务。 事务会把日志记录临时的保存到内存中而后再 写入到适配中(此例子中为文件),(这个操做是个原子操做)api
<?php
use Phalcon\Logger\Adapter\File as FileAdapter; // 生成日志新组件实例 $logger = new FileAdapter("app/logs/test.log"); // 开启事务 $logger->begin(); // 添加消息 $logger->alert("This is an alert"); $logger->error("This is another error"); // 保存消息到文件中 $logger->commit();
Phalcon\Logger 也能够同时保存日志信息到多个适配器中:app
<?php
use Phalcon\Logger, Phalcon\Logger\Multiple as MultipleStream, Phalcon\Logger\Adapter\File as FileAdapter, Phalcon\Logger\Adapter\Stream as StreamAdapter; $logger = new MultipleStream(); $logger->push(new FileAdapter('test.log')); $logger->push(new StreamAdapter('php://stdout')); $logger->log("This is a message"); $logger->log("This is an error", Logger::ERROR); $logger->error("This is another error");
信息发送的顺序和处理器(适配器)注册的顺序相同。ide
此组件使用 formatters 在信息发送前格式化日志信息。 支持下然后格式:性能
适配器 | 描述 | 接口 |
---|---|---|
Line | 文本方式格式化信息 | Phalcon\Logger\Formatter\Line |
Json | 使用JSON格式格式化信息 | Phalcon\Logger\Formatter\Json |
Syslog | 使用系统提供的格式格式化信息 | Phalcon\Logger\Formatter\Syslog |
使用单行格式格式化信息。 默认的格式以下:ui
[%date%][%type%] %message%spa
咱们可使用setFormat()来设置自定义格式。 下面是格式变量:操作系统
下面的例子中展现了如何修改日志格式:
<?php
use Phalcon\Logger\Formatter\Line as LineFormatter; // 修改日志格式 $formatter = new LineFormatter("%date% - %message%"); $logger->setFormatter($formatter);
若要实现自定义的格式则要实现 Phalcon\Logger\FormatterInterface 接口, 这样才能扩展已有的格式或建立自定义的格式
下面的例子中展现了每种适配器的简单用法:
系统日志保存消息到一个已注册的有效的PHP流中。 这里列出了可用的流: here <http://php.net/manual/en/wrappers.php>`_:
<?php
use Phalcon\Logger\Adapter\Stream as StreamAdapter; // 使用zlib压缩流 $logger = new StreamAdapter("compress.zlib://week.log.gz"); // 发送消息到stderr $logger = new StreamAdapter("php://stderr");
文件适配器保存全部的日志信息到普通的文件中。 默认状况下日志文件使用添加模式打开,打开文件后文件的指针会指向文件的尾端。 若是文件不存在,则会尝试建立。 咱们能够经过传递附加参数的形式来修改打开的模式:
<?php
use Phalcon\Logger\Adapter\File as FileAdapter; // 使用写模式打开 $logger = new FileAdapter("app/logs/test.log", array( 'mode' => 'w' ));
使用系统日志适配器。 因为操做系统的不一样获得的日志也不尽相同:
<?php
use Phalcon\Logger\Adapter\Syslog as SyslogAdapter; // 基本用法 $logger = new SyslogAdapter(null); // Setting ident/mode/facility 参数设置 $logger = new SyslogAdapter("ident-name", array( 'option' => LOG_NDELAY, 'facility' => LOG_MAIL ));
发送消息到FirePHP:
<?php
use Phalcon\Logger\Adapter\Firephp as Firephp; $logger = new Firephp(""); $logger->log("This is a message"); $logger->log("This is an error", \Phalcon\Logger::ERROR); $logger->error("This is another error");
若是开发者想自定义新的日志组件则需实现此接口: Phalcon\Logger\AdapterInterface 。