So registrieren Sie ein Zend\Log Instanz in der Dienste-Verwalter in ZF2
Frage ich mich, was ist der beste Weg, zu initiieren und zu re-verwenden Sie eine logger-Instanz, die durch den Dienste-Verwalter in ZF2.
Natürlich, ich kann eine einfache Methode sein, um in jeder Klasse, wie:
public function getLogger () {
$this->logger = new Logger();
$this->logger->addWriter(new Writer\Stream('/log/cms_errors.log'));
return $logger;
}
aber ich Frage mich, was ist der beste Weg, um zu registrieren, eine ähnliche Struktur in der global.php.
Bisher kann ich
fügen Sie die folgenden global.php
'Zend\Log'=>array(
'timestampFormat' => 'Y-m-d',
array(
'writerName' => 'Stream',
'writerParams' => array(
'stream' => '/log/zend.log',
),
'formatterName' => 'Simple',
),
),
Wenn ich versuchen Sie es aufrufen durch:
$this->getServiceLocator()->get('Zend\Log')
Bekomme ich ein :
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Zend\Log
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie die folgenden Daten, um 'global.php'
Und dann werden Sie in der Lage zu nennen
$this->getServiceLocator()->get('Zend\Log')->info('Something...');
?Alternativ, und mehr aus, könnten Sie ein setup-log listener und halten Sie Ihre logger entkoppelt von der app aus. Die
EventManager
ist eine sehr mächtige Komponente und ZF2 ist im Grunde eine ereignisgesteuerte framework jetzt.In Ihrem
module.php
man könnte hinzufügen, etwas wie:Dann von überall, z.B. vom Controller, die Sie tun können:
Vielleicht die abstrakte logger Fabrik für die Konfiguration statt der normalen Fabrik
http://framework.zend.com/manual/2.2/en/modules/zend.mvc.services.html#zend-log-loggerabstractservicefactory
module/MODULENAME/config/module.config.php
)Bitte versuchen Sie es erneut mit dem absoluten Pfad \
Erstellte ich eine Standard-Datenbank-writer-Objekt in meine bootstrap und registriert Sie in der Dienste-Verwalter.
Dem AbstractController ist eine Instanz von "ServiceLocatorAwareInterface". Ich kann also nur aufrufen, in meinem controller