phpzend-framework3zend-log

Zend 3 - using logger as service


I am quite novice with ZF3 and I can't figure out how should I define a logger module as a service and how could I use (reuse) it in other modules. The official documentation is poor from this point of view. Any short example would be good.


Solution

  • If you want to use zend-log in ZF app, after installation you need to do 2 thing:

    1. To register Zend\Log in the application config under the 'modules' key.

    2. Add config for your logger in global.php or module config

      'log' => [
        'MyLogger' => [
          'writers' => [
              'stream' => [
                  'name' => 'stream',
                  'priority' => \Zend\Log\Logger::ALERT,
                  'options' => [
                      'stream' => '/tmp/php_errors.log',
                      'formatter' => [
                          'name' => \Zend\Log\Formatter\Simple::class,
                          'options' => [
                              'format' => '%timestamp% %priorityName% (%priority%): %message% %extra%',
                              'dateTimeFormat' => 'c',
                          ],
                      ],
                      'filters' => [
                          'priority' => [
                              'name' => 'priority',
                              'options' => [
                                  'operator' => '<=',
                                  'priority' => \Zend\Log\Logger::INFO,
                              ],
                          ],
                      ],
                  ],
              ],
          ],
        ],
      ],
      

    after that just take it from Service Manager and use it:

    $logger = $container->get('MyLogger'); // <-- the key that you register in config above
    $logger->info('Logging info message in the file');
    

    You probably want to take logger from SM and than inject it in a class that you want to use it.

    There is a god blog post about Logging with zend-log