Zend_Log_Writer_MongoDb is a log writer for Zend_Log enabling centralized logging in distributed environments. It enables log aggregation, filtering and prevents the loss of log information in cloud instances that auto-scale down and are not able to copy log files to outside storage. When utilized with 'capped' collections tailing cursors may be implemented for realtime log observations by utilizing the Zend_Tool_Project_Provider_MongoLog project provider.
3. Component Requirements, Constraints, and Acceptance Criteria
This component will require installation of the Mongo extension.
This component will require logging collections to be capped for tailing.
This component will support mapping of document members via configuration.
This component will track origination hostnames as part of the document saved.
4. Dependencies on Other Framework Components
MongoDb pecl extension
Zend_Log_Writer_Abstract
Zend_Tool_Project_Provider_Abstract
Zend_Tool_Project_Provider_Exception
5. Theory of Operation
The Zend_Log_Writer_MongoDb component may be instantiated explicitly as a writer and attached to an existing Zend_Log instance, via the Zend_Log_Writer_MongoDb::factory() method, or the Zend_Log::factory().
The Zend_Tool_Project_Provider_MongoLog if elected to be included would examine the project resources for a MongoDb writer type for determination of configuration or throw an Zend_Tool_Project_Provider_Exception. This tool will watch the logs of all servers in the cluster and tail them in realtime. The three options are:
6. Milestones / Tasks
Describe some intermediate state of this component in terms of design notes, additional material added to this page, and / code. Note any significant dependencies here, such as, "Milestone #3 can not be completed until feature Foo has been added to ZF component XYZ." Milestones will be required for acceptance of future proposals. They are not hard, and many times you will only need to think of the first three below.
Milestone 1: Complete review and incorporate feedback into design.
Milestone 2: Complete Unit tests.
Milestone 3: Complete prototypical code and passing all unit tests.