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.