nemutaisama / zend-logger
为Zend Framework 2提供简单日志记录的辅助工具
dev-master
2016-06-28 18:58 UTC
Requires
- php: >=5.4.0
- psr/log: ~1.0
- zendframework/zend-mvc: ^2
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
使用方法
-
将
ZendLogger
添加到您的config/application.config.php
中以启用模块。 -
配置任何PSR-3日志服务,并在ServiceManager中注册它。
-
将模块中的配置文件
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); }