文档章节

Zend_Log 配置使用示例

前台满300减30
 前台满300减30
发布于 2012/01/12 10:09
字数 458
阅读 182
收藏 0

Zend Framework 框架的使用范围已经越来越广了啊。不像前几年网上的中文资料都非常的少。最近也在用Zend Framework 框架做项目。其中使用到了Zend_Log组件,特将配置发下来和大家分享一下。

1、修改 Bootstrap.php,在其中加入_initLog()函数。

protected function _initLog()

{

    $log = $this->getOption('log');     

    $curLogDir = $log['dir'] . date('Ym');

    $logFile = $log['dir'] . date('Ym'). '/'. date('d') .'.txt';    

    if( !is_dir( $curLogDir ) ){

        try {

            mkdir( $curLogDir , 0700);

        } catch (Exception $e) {

            echo nl2br($e->__toString());

        }          

    } 

    $writer = new Zend_Log_Writer_Stream( $logFile );       

    $format = '%timestamp% %priorityName% (%priority%): %message% 

[%modules%]-[%controller%]-[%action%] '. PHP_EOL;

    $formatter = new Zend_Log_Formatter_Simple($format);

    $writer->setFormatter($formatter);        

    $logger = new Zend_Log($writer);

    $logger->addFilter((int)$log['priority']);       

    Zend_Registry::set('log',$logger);

}

它的作用如下:以年月创建目录,以日期创建日志文件;声明日志保存到文件;定义日志格式;声明日志过滤级别;存取$logger对象。$log数组元素读取了application.ini配置。

2、在Controller中设置当前的action信息

我们的Controller的关系是 abstract class Custom_Controller_RootController extends Zend_Controller_Action。在Custom_Controller_RootController中定义了log()方法:

public function log($priority,$message)

{        

   $log = Zend_Registry::get('log');

   $log->setEventItem('modules', $this->_request->getModuleName() );

   $log->setEventItem('controller', $this->_request->getControllerName() );

   $log->setEventItem('action', $this->_request->getActionName() );

   $log->log($message, $priority);

}

它的作用是:获取在_initLog()定义的$logger对象,为对象添加modules/controller/action 元素;为什么这三个元素要在这里定义呢,因为只有执行到这里我们才知道分发到了哪个控制器。我们在日志里记录这三个元素就是在查看日志时容易定位问题位 置。

3、在继承自Custom_Controller_RootController类中调用

class UserController extends Custom_Controller_DefaultController中定义了indexAction()方法:

public function indexAction()

{   

   $this->log(4,'资金操作出错');

}

4、日志文件信息

2011-04-07T10:11:28+08:00 WARN (4): 资金操作出错 [default]-[user]-[index]

以上就是配置的全过程,如果不记录当前的modules/controller/action倒是简单多了。

本文转载自:http://www.coderbolg.com/content/125.html

前台满300减30
粉丝 1
博文 35
码字总数 13442
作品 0
宝山
高级程序员
私信 提问
Zend Framework的设计模式之注册者(registry)模式

注册者模式 (registry) 提供了在程序中有条理的存放并管理对象 (object)一种解决方案 ,它的主要作用是防止用户滥用全局对象 (global object) 。滥用全局对象可能会导致对象可见性混乱、安全...

前台满300减30
2012/01/12
403
0
Zend_Application

ZendApplication可谓是Zend MVC框架中几大重要模块之一,入口文件index.php一开始读取的时候就需要加载ZendApplication。 让我们从一个Zend框架项目开始会做些什么操作来分析, 首先就是会读...

青云_K
2013/02/01
363
0
PHP框架queryphp教程:入门一 Hello World

配置好php环境 不会配置可以看下附录php安装 下载queryphp后,把解压出来 http://code.google.com/p/queryphp/downloads/list 放到一个目录里面 比如放到d:\work\queryphp目录,不会安装的童...

justjavac
2012/12/05
1K
1
使用 Zend Framework 实现 SOAP 服务

引言 Web 服务最近非常流行,其中基于 REST 的服务吸引了大部分的关注。REST 之所以流行,是由于它简单、直接和能够处理现有 HTTP 方法。但是也要记住,REST 并不是唯一的方法:SOAP,即 Si...

kisshua
2013/03/28
141
0
lamp环境搭建

CentOS 6.3/64位 #! /bin/bash groupadd mysql useradd -g mysql mysql cd /public tar zxvf mysql-5.0.41.tar.gz cd /public/mysql-5.0.41 ./configure --prefix=/usr/local/mysql --local......

寂寞淡淡愁
2014/04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

R语言基本命令,dataframe增删改查

基本操作: 查询变量类型(假设变量名是a) class(a) 在R语言中: T 代表--> True F 代表--> False 与、或运算符 读取: 读取csv文件到dataframe(字符串不当作factor类型来处理,csv的na不作...

flash胜龙
32分钟前
4
0
重看《功夫熊猫1》却有了另一番感触

最近带着小孩,又看了一遍电影《功夫熊猫1》。但这次中间的很多情节,让我有了另一番新的感触。 电影的开头是熊猫阿宝,在梦里成为了一个武功盖世的大侠。这是他最大的梦想。 当阿宝热情洋溢...

我是菜鸟我骄傲
35分钟前
10
1
3.设计模式之二:原型模式【创建型模式】

在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样...

Eappo_Geng
44分钟前
7
0
Springboot+Junit测试出现No tests found matching

话不多说,出现以下错误,如果各注解都没问题,请检查包路径 测试用例包路径必须跟项目启动类包路径一致,不然也会报下面错误 java.lang.Exception: No tests found matching [{ExactMatche...

fangsw
51分钟前
5
0
封装,继承,多态?

1. 封装? 封装指的是利用抽象数据类型将数据和基于数据操作全部放在一个类里,使其构成一个不可分割的实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的实现细节,并对外只提供操作...

happywe
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部