Alternatively, and more elegantly, you can set up a log listener and disconnect your logger from your application. EventManager is a very powerful component, and ZF2 is basically an event driven platform.
In your module.php you can add something like:
// Setup the Zend Logger, pseudocode $logger = new Logger; $writer = new Writer; $logger->addWriter($writer); // Attach a logging listener for the log event on application level, working code $events = StaticEventManager::getInstance(); $events->attach('*', 'log', function($event) use ($logger) { $target = get_class($event->getTarget()); $message = $event->getParam('message', 'No message provided'); $priority = (int) $event->getParam('priority', Logger::INFO); $message = sprintf('%s: %s', $target, $message); $logger->log($priority, $message); });
Then from anywhere, for example. from the controller you can:
$this->getEventManager()->trigger('log', $this, array( 'priority' => 7, 'message' => 'some log message' ));
markus
source share