php 中init 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倒是简单多了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要查看php-fpm.log文件,可以使用以下命令: ``` sudo less /var/log/php-fpm.log ``` 如果想要配置logrotate,可以按照以下步骤进行: 1. 编辑logrotate的配置文件:sudo nano /etc/logrotate.d/php5-fpm 2. 在文件添加以下内容: ``` /var/log/php5-fpm.log { weekly missingok rotate 52 compress delaycompress notifempty create 0660 www-data adm sharedscripts postrotate /etc/init.d/php5-fpm reload > /dev/null endscript } ``` 这个配置文件将会每周轮换一次日志文件,并且保留最近的52个文件。日志文件会被压缩并且延迟压缩,以便在下一次轮换时进行。 3. 保存并退出文件。 4. 执行以下命令以测试logrotate是否正常工作: ``` sudo logrotate -f /etc/logrotate.d/php5-fpm ``` 这将立即执行logrotate并压缩php5-fpm.log文件。如果一切正常,你应该会看到输出,表明已经轮换了日志文件。 5. 设置定时任务,以便每周自动运行logrotate: ``` sudo nano /etc/cron.weekly/logrotate ``` 在文件添加以下内容: ``` #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0 ``` 这个文件将会在每周运行logrotate,以便自动轮换日志文件。保存并退出文件。 6. 设置文件权限: ``` sudo chmod 755 /etc/cron.weekly/logrotate ``` 现在,你已经成功地配置了php5-fpm.loglogrotate。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值