nemutaisama / zend-logger

为Zend Framework 2提供简单日志记录的辅助工具

dev-master 2016-06-28 18:58 UTC

This package is auto-updated.

Last update: 2024-09-27 19:52:46 UTC


README

#ZendLogger

将任何PSR-3日志记录器集成到ZendFramework2项目中。此包允许您通过EventManager轻松记录错误。

安装

推荐通过composer安装。

{
    "require": {
        "nemutaisama/zend-logger": "*@dev"
    }
}

或者

composer require nemutaisama/zend-logger:*@dev

使用方法

  1. ZendLogger添加到您的config/application.config.php中以启用模块。

  2. 配置任何PSR-3日志服务,并在ServiceManager中注册它。

  3. 将模块中的配置文件config/zendlogger.global.php.dist复制到项目的config/autoload中。

此时配置很简单 - 只需设置您的日志服务名称。默认配置使用EnliteMonolog包,服务名称来自默认配置。

    'ZendLogger' => 'YourLoggerServiceName'

现在您可以使用它了。

此包附带一组ControllerPlugins和用于模型的trait。从控制器中可以直接使用。

class IndexController extends AbstractActionController {

    public function indexAction(){
        ...
        $this->debug('message', [context]);
        $this->info('message', [context]);
        $this->notice('message', [context]);
        $this->warning('message', [context]);
        $this->error('message', [context]);
        $this->critical('message', [context]);
        $this->alert('message', [context]);
        $this->emergency('message', [context]);
        $this->log($level, 'message', [context]);
        ...
    }
}

从模型类中可以直接使用trait。由于包使用EventManager,您应该在类中提供它。例如,通过简单地使用Zend\EventManager\EventManagerAwareTrait。之后的使用方式与控制器相同。

namespace MyPackage;

use ZendLogger\LoggerTrait;
use Zend\EventManager\EventManagerAwareTrait;

class MyModel {

    use LoggerTrait;
    use EventManagerAwareTrait;
    
    public function logErrors(){
        ...
        $this->debug('message', [context]);
        $this->info('message', [context]);
        $this->notice('message', [context]);
        $this->warning('message', [context]);
        $this->error('message', [context]);
        $this->critical('message', [context]);
        $this->alert('message', [context]);
        $this->emergency('message', [context]);
        $this->log($level, 'message', [context]);
        ...
    }
}

事件

您还可以通过连接共享事件管理器的事件来处理其他任何错误。

    public function attach(EventManagerInterface $events)
    {
        $sharedEvents = $events->getSharedManager();
        $this->listeners[] = $sharedEvents->attach('*', 'log.emergency', array($this, 'onEmergency'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.alert', array($this, 'onAlert'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.critical', array($this, 'onCritical'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.error', array($this, 'onError'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.warning', array($this, 'onWarning'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.notice', array($this, 'onNotice'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.info', array($this, 'onInfo'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.debug', array($this, 'onDebug'), 100);
        $this->listeners[] = $sharedEvents->attach('*', 'log.message', array($this, 'onMessage'), 100);
    }