Phalcon 日志记录(Logging)

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

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

适配器(Adapters)?

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

适配器 描述 接口
File 保存日志到普通文件 Phalcon\Logger\Adapter\File
Stream 保存日志到PHP流 Phalcon\Logger\Adapter\Stream
Syslog 保存到系统日志 Phalcon\Logger\Adapter\Syslog
Firephp 发送日志到FirePHP Phalcon\Logger\Adapter\FirePHP

创建日志(Creating a Log)?

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

<?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

事务(Transactions)?

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

<?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();

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

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

<?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");

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

信息格式(Message Formatting)?

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

适配器 描述 接口
Line 文本方式格式化信息 Phalcon\Logger\Formatter\Line
Json 使用JSON格式格式化信息 Phalcon\Logger\Formatter\Json
Syslog 使用系统提供的格式格式化信息 Phalcon\Logger\Formatter\Syslog

行格式化处理(Line Formatter)?

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

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

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

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

<?php

use Phalcon\Logger\Formatter\Line as LineFormatter;

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

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

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

适配器(Adapters)?

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

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

系统日志保存消息到一个已注册的有效的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");

文件日志记录器(File Logger)?

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

<?php

use Phalcon\Logger\Adapter\File as FileAdapter;

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

Syslog 日志记录器(Syslog Logger)?

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

<?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 日志记录器(FirePHP Logger)?

发送消息到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");

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

如果开发者想自定义新的日志组件则需实现此接口: Phalcon\Logger\AdapterInterface 。

时间: 2024-10-24 23:18:34

Phalcon 日志记录(Logging)的相关文章

Yii日志记录Logging

1.Yii::getLogger()->log($message, $level, $category = 'application') 2.Yii::trace($message, $category = 'application'); 3.Yii::error($message, $category = 'application'); 4.Yii::warning($message, $category = 'application'); 5.Yii::info($message, $cat

python日志记录-logging模块

1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a test logging") >>>loggin.info("still a test logging") # 默认情况下以上两行没有输出,需要指定日志级别才行 >>>logging.warn("it's waring!!!&quo

python日志设置[logging]

logging介绍 用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等; 优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息: 可以由开发者决定将信息输出到什么地方,以及怎么输出(print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据) 日志级别 DEBUG:最详细的日志信息,典型应用场景是 问题诊断 INFO:信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工

[ Python入门教程 ] Python中日志记录模块logging使用实例

python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到屏幕. import logging logging.critical("critical log") logging.error("error log") logging.warning("warning log") logging.info(&q

基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?

简单介绍: 说明: 此模块儿提供了文件,HTTP GET/POST,SMTP,SOCKET等方式实现日志记录,甚至可以自动实现具体的日志记录方式 快速安装: pip install --upgrade logging 处理流程: 日志级别: 属性名称 属性说明 logging.NOTSET 默认为0 logging.DEBUG 调试为10 logging.INFO 一般为20 logging.WARN 警告为30 logging.ERROR 错误为40 logging.CRITICAL 严重为5

转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常保存到数据库中,所以就到网上搜了下专门的日志记录工具,一搜果然很多,比如:log4net,NLog,EntLib Logging等等,但是还是log4net名气最大,所以就下载下来试用了一番,果然很方便,其涵盖了所有常用的日志记录方式具体的可以看下表: AdoNetAppender 将日志记录到数据

日志记录Filter

Filter也可以日志记录,在request 之前后, 该filter 使用Apache 日只记录工具,记录客户IP ,访问URI 以及消耗时间. LogFilter.java package com.helloweenvsfei.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig;

02-Hibernate的日志记录

日志:程序开发中的一些信息. 常用信息输出:System.out.println(""); * 这种方式不好: * 如果输出内容比较多,项目已经开发完毕,不想使用输出.需要打开每个类,将输出的代码注释. 日志:Hibernate中使用slf4j技术. slf4j:SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统. * 用于整合其他日志系统. 在企业中常用的日志记录:log4j * 是具体的日

python日志模块-logging

日志模块 logging logging模块主要可以根据自定义日志信息,在程序运行的时候将日志打印在终端及记录日志到文件中.在这先了解一下logging支持的日志五个级别 debug() 调试级别,一般用于记录程序运行的详细信息 info() 事件级别,一般用于记录程序的运行过程 warnning() 警告级别,,一般用于记录程序出现潜在错误的情形 error() 错误级别,一般用于记录程序出现错误,但不影响整体运行 critical 严重错误级别 , 出现该错误已经影响到整体运行 简单用法,将