Logging - OggettoWeb/messenger GitHub Wiki

Using logger

Messenger core will produce logs about sent/received messages payload.
Each class instantiated via Messenger DI (Mage::getSingleton('messenger/di')) can implement Oggetto_Messenger_Model_Log_Loggable interface and receive Zend_Log object and use it to produce logs messages. All messenger event observers are automatically instantiated via DI, so you can just implement the interface and use log object:

class MyCompany_MyModule_Model_Happenings_Observer
    implements
    Oggetto_Messenger_Model_Event_Observer_Interface,
    Oggetto_Messenger_Model_Log_Loggable
{
    /**
     * Logger
     *
     * @var Zend_Log
     */
    private $_logger;

    /**
     * Set logger
     *
     * @param Zend_Log $logger Logger
     * @return mixed
     */
    public function setLogger(Zend_Log $logger)
    {
        $this->_logger = $logger;
        return $this;
    }

    /**
     * Check if event could be observed by this class
     *
     * @param Oggetto_Messenger_Model_Event $event Event
     * @return boolean
     */
    public function match(Oggetto_Messenger_Model_Event $event)
    {
        // ...
    }

    /**
     * Observe event
     *
     * @param Oggetto_Messenger_Model_Event $event Event
     * @return void
     */
    public function observe(Oggetto_Messenger_Model_Event $event)
    {
        $this->_logger->info('Something is happening...');
    }
}

Log format and output

Messenger can use 2 log formats:

  • Text. Readable by human.
  • JSON. Readable by log collecting systems (like fluentd).

When sending messages from within Magento front controller, logs will be saved to configured log file with configured log format (admin: System / Configuration / Messenger Setup section, Logging fieldset).

When receiving messages from command line daemon, logs will be forwarded to stdout in text format. This is helpful for debugging. Once you are in production you may want to forward logs to some file and specify --log-format json option to spawn logs as JSON:

php shell/messenger/receiver.php start [config] --log-format json

What is logged

When logger class is used like this:

$logger->info('My data')

it will produce the following data:

  • Timestamp
  • Log level title
  • Log level code
  • PID (unique process ID, useful when multiple parallel daemon workers are set up, so you can distinguish between log messages)
  • Message itself

As a text message it will look like:

2014-06-05T08:17:15+00:00 INFO (6): [70d7844c5e] My Data

where 70d7844c5e is PID and 6 is log level code.