文档
Welcome! 安装(Installation) 示例列表(List of examples) 依赖注入与服务定位器(Dependency Injection/Service Location) MVC 架构(The MVC Architecture) 使用控制器(Using Controllers) 使用模型(Working with Models) 模型元数据(Models Meta-Data) 事务管理(Model Transactions) Phalcon 查询语言(Phalcon Query Language (PHQL)) 缓存对象关系映射(Caching in the ORM) 对象文档映射 ODM (Object-Document Mapper) 使用视图(Using Views) 视图助手(View Helpers) 资源文件管理(Assets Management) Volt 模版引擎(Volt: Template Engine) MVC 应用(MVC Applications) 路由(Routing) 调度控制器(Dispatching Controllers) 微应用(Micro Applications) 使用命名空间(Working with Namespaces) 事件管理器(Events Manager) 请求环境 (Request Environment) 返回响应(Returning Responses) Cookie 管理(Cookies Management) 生成 URL 和 路径(Generating URLs and Paths) 闪存消息(Flashing Messages) 使用 Session 存储数据(Storing data in Session) 过滤与清理(Filtering and Sanitizing) 上下文编码(Contextual Escaping) 验证(Validation) 表单(Forms) 读取配置(Reading Configurations) 分页(Pagination) 使用缓存提高性能(Improving Performance with Cache) 安全(Security) 加密/解密( Encryption/Decryption ) 访问控制列表 ACL(Access Control Lists ACL) 多语言支持(Multi-lingual Support) 通用类加载器 ( Universal Class Loader ) 日志记录(Logging) 注释解析器(Annotations Parser) 命令行应用(Command Line Applications) 队列(Queueing) 数据库抽象层(Database Abstraction Layer) 国际化(Internationalization) 数据库迁移(Database Migrations) 调试应用程序(Debugging Applications) Phalcon 开发工具(Phalcon Developer Tools) 提高性能:下一步该做什么?(Increasing Performance: What's next?) 单元测试(Unit testing) 授权(License)
教程

发布于 2015-08-21 15:31:43 | 339 次阅读 | 评论: 0 | 来源: 网络整理

日志记录(Logging)

Phalcon提供了一个日志记录组件即 PhalconLogger。 我们可以使用此组件输出日志到不同的流中,如文件,系统日志等。 这个组件还提供了其它的功能如日志事务(类似于数据库的事务), 配置选项, 还可以输出不同的格式,另外还支持多种过滤器。 PhalconLogger

提供了多种日志记录方式,从调试程序到跟踪应用的执行以满足应用的需求。

适配器(Adapters)

此组件使用不同的流适配器来保存日信息。 我们可以按需使用适配器。支持的适配器如下:

适配器 描述 接口
File 保存日志到普通文件 PhalconLoggerAdapterFile
Stream 保存日志到PHP流 PhalconLoggerAdapterStream
Syslog 保存到系统日志 PhalconLoggerAdapterSyslog
Firephp 发送日志到FirePHP PhalconLoggerAdapterFirePHP

创建日志(Creating a Log)

下面的例子展示了如何创建日志对象及如何添加日志信息:

<?php

use PhalconLoggerAdapterFile as FileAdapter;

$logger = new FileAdapter("app/logs/test.log");
$logger->log("This is a message");
$logger->log("This is an error", PhalconLogger::ERROR);
$logger->error("This is another error");

产生的日志信息如下:

[Tue, 28 Jul 15 22:09:02 -0500][DEBUG] This is a message
[Tue, 28 Jul 15 22:09:02 -0500][ERROR] This is an error
[Tue, 28 Jul 15 22:09:02 -0500][ERROR] This is another error

事务(Transactions)

保存日志到适配器如文件(文件系统)是非常消耗系统资源的。 为了减少应用性能上的开销,我们可以使用日志事务。 事务会把日志记录临时的保存到内存中然后再 写入到适配中(此例子中为文件),(这个操作是个原子操作)

<?php

use PhalconLoggerAdapterFile 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();

使用多个处理程序进行日志记录(Logging to Multiple Handlers)

PhalconLogger 也可以同时保存日志信息到多个适配器中:

<?php

use PhalconLogger;
use PhalconLoggerMultiple as MultipleStream;
use PhalconLoggerAdapterFile as FileAdapter;
use PhalconLoggerAdapterStream 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");

信息发送的顺序和处理器(适配器)注册的顺序相同。

信息格式(Message Formatting)

此组件使用 formatters 在信息发送前格式化日志信息。 支持下而后格式:

适配器 描述 接口
Line 文本方式格式化信息 PhalconLoggerFormatterLine
Json 使用JSON格式格式化信息 PhalconLoggerFormatterJson
Syslog 使用系统提供的格式格式化信息 PhalconLoggerFormatterSyslog

行格式化处理(Line Formatter)

使用单行格式格式化信息。 默认的格式如下:

[%date%][%type%] %message%

我们可以使用setFormat()来设置自定义格式。 下面是格式变量:

下面的例子中展示了如何修改日志格式:

<?php

use PhalconLoggerFormatterLine as LineFormatter;

// 修改日志格式
$formatter = new LineFormatter("%date% - %message%");
$logger->setFormatter($formatter);

自定义格式处理(Implementing your own formatters)

若要实现自定义的格式则要实现 PhalconLoggerFormatterInterface 接口, 这样才能扩展已有的格式或创建自定义的格式

适配器(Adapters)

下面的例子中展示了每种适配器的简单用法:

数据流日志记录器(Stream Logger)

系统日志保存消息到一个已注册的有效的PHP流中。 这里列出了可用的流: here <http://php.net/manual/en/wrappers.php>`_:

<?php

use PhalconLoggerAdapterStream as StreamAdapter;

// 使用zlib压缩流
$logger = new StreamAdapter("compress.zlib://week.log.gz");

// 发送消息到stderr
$logger = new StreamAdapter("php://stderr");

文件日志记录器(File Logger)

文件适配器保存所有的日志信息到普通的文件中。 默认情况下日志文件使用添加模式打开,打开文件后文件的指针会指向文件的尾端。 如果文件不存在,则会尝试创建。 我们可以通过传递附加参数的形式来修改打开的模式:

<?php

use PhalconLoggerAdapterFile as FileAdapter;

// 使用写模式打开
$logger = new FileAdapter(
    "app/logs/test.log",
    array(
        'mode' => 'w'
    )
);

Syslog 日志记录器(Syslog Logger)

使用系统日志适配器。 由于操作系统的不同得到的日志也不尽相同:

<?php

use PhalconLoggerAdapterSyslog as SyslogAdapter;

// 基本用法
$logger = new SyslogAdapter(null);

// Setting ident/mode/facility 参数设置
$logger = new SyslogAdapter(
    "ident-name",
    array(
        'option'   => LOG_NDELAY,
        'facility' => LOG_MAIL
    )
);

FirePHP 日志记录器(FirePHP Logger)

This logger sends messages in HTTP response headers that are displayed by FirePHP, a Firebug extension for Firefox.

<?php

use PhalconLogger;
use PhalconLoggerAdapterFirephp as Firephp;

$logger = new Firephp("");
$logger->log("This is a message");
$logger->log("This is an error", Logger::ERROR);
$logger->error("This is another error");

自定义适配器(Implementing your own adapters)

如果开发者想自定义新的日志组件则需实现此接口: PhalconLoggerAdapterInterface

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务