Graylog functionality for Zend Framework 2
Switch branches/tags
Nothing to show
Pull request Compare This branch is 5 commits ahead of rmasters:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Graylog2 for Zend Framework 2

A Zend\Log writer and formatter helps you add Graylog logging to your ZF2 application, using Graylog2/gelf-php.


Composer install todo. If you know how to install a ZF2 module the manual way (by adding to vendor/composer/autoload_*.php, etc.) then you can do that.

Ensure that Graylog2/gelf-php is on the include_path as well.


I added a method to a custom base controller:

class Base extends \Zend\Mvc\Controller\AbstractActionController {
    private $logger;

    protected function getLogger() {
        if (!isset($this->logger)) {
            $this->logger = new \Zend\Log\Logger;

            // __construct($facility, $hostname, $port)
            $writer = new \ZF2Graylog\Log\Writer\Graylog2('ZF2', '');

        return $this->logger;

Which can then be used as usual:

$this->getLogger()->info('Informative message');

The formatter should (or will) support error logging (as below) by mapping the following attributes to their respective GELF fields:

$logger = new \Zend\Log\Logger;
$writer = new \ZF2Graylog\Log\Writer\Graylog2('ZF2', '');


Zend\Log        GELFMessage
message         message, full_message, short_message (unless present in $values)
errno           level
file            file
line            line
context         additional fields (to be tested)

Additional fields that are associated with GELF fields:

  • full (message) is mapped to full_message (if present, otherwise message)
  • short (message) is mapped to short_message (if present, otherwise message)
  • version is mapped to version (not set if not present)
  • facility is mapped to facility. A default facility is set in the writer.
  • Additional fields are mapped as additional fields.


  • Write a composer.json that includes the Graylog2/gelf-php lib.
  • Docblocks.
  • Further testing of different events.
  • Check errno maps to the correct severity level when used as an errorHandler.


TBC, will probably be MIT.