
* Reflection is used in _Zend_Log::_{_}construct()_ to build priorities name (slow)
* Magic method \__call() used for shortcut log an event (slow, and hard to discover API)
h2. Changes
* API discoverable (priority as method: debug(), info(), notice(), etc)
* Fixes XML formatter validation (prolog XML, and missing root node)
* Improve Simple Formatter
* Improve extras informations in some writers/handlers
* Use the broker to review factory (ZF2 flavor)
* Add event for log() method (ZF2 flavor)
* Create _LoggerAware_ for Di
* Refactor filter chain mecanism (_Filter\FilterChain_ or _Iterator_)
** Writer interface can extend FilterAware interface (common behavior between Logger and Writer)
* Separate responsability: create an LoggingEvent/Record class
h2. Proposed Improvements
* Create Loggable/Logging interface for common log methods
* New formatter (json)
* _Logger::setEventItem()_ enchancements in plugins (IP, User agent, better stack trace, extract of source code, etc)
* Renderer for exceptions, array, string object, event, etc (format exception instead of \__toString())
* Separate responsability: error handler with [ErrorException|http://php.net/manual/en/class.errorexception.php] for debug (set level between notice and error)
* Provide some listeners to help debug in some workflows like MVC, events, etc (ZF2 flavor)
* Add PHP 5.3 flavors with lambda functions/closures, etc
* New writers/handlers (Queue, Ticket in Redmine/HTTP?, socket?)
* Check issues/wishes on JIRA ([ZF-1833|http://framework.zend.com/issues/browse/ZF-1833], [ZF-2428|http://framework.zend.com/issues/browse/ZF-2428], [ZF-2618|http://framework.zend.com/issues/browse/ZF-2618], [ZF-2658|http://framework.zend.com/issues/browse/ZF-2658], [ZF-3107|http://framework.zend.com/issues/browse/ZF-3107], [ZF-3108|http://framework.zend.com/issues/browse/ZF-3108], [ZF-3581|http://framework.zend.com/issues/browse/ZF-3581], [ZF-5741|http://framework.zend.com/issues/browse/ZF-5741], [ZF-6972|http://framework.zend.com/issues/browse/ZF-6972], [ZF-7959|http://framework.zend.com/issues/browse/ZF-7959], [ZF-10427|http://framework.zend.com/issues/browse/ZF-10427], [ZF-10498|http://framework.zend.com/issues/browse/ZF-10498], [ZF2-18|http://framework.zend.com/issues/browse/ZF2-18])
h2. Consistency and b/c
* Modify parameters of _Logger::log($priority, $message, $extras)_
* Rename _Filter\Message_ in Filter\StringMatch or Filter\Regex
* Rename Writer subnamespace to Handler (like java, python, ruby, etc)
h2. Proposed Architecture
* *Logger:* a logging container stores a stack of handlers (subject in observer pattern)
* *Record:* a logging event is represented by a string, and some metadatas for the context
* *Handler:* send all logging events outside (to file, to smtp, etc) of the logger (observer in observer pattern)
* *Formatter:* format and convert log entries for output
* *Filter:* define a rule in order to exclude log of an event
h2. Thinking
* Do we need a LoggerAggregate?
* Do we need to a Priority class to separate responsability from the Logger?
* Do we need a queue or a stack for writers/handlers?