- 2012-08-19: Working on the new Drupal 8 Entity system at Drupalcon Munich
- 2012-06-15: Working on the new Drupal 8 Entity system at DrupalDevDays Barcelona
- 2012-03-23: Working on the future Drupal Document Oriented Storage at DrupalCon Denver. D8 or later ? Bets are on.
- 2011-09-01: Building an Unfuddle to Drupal Casetracker import module using Migrate
- 2011-08-28: Back from DrupalCon London and its WSCCI code sprint. Wow.
- 2009-11-29: mongodb_watchdog module created by dereine, ported to D7 by me in about half an hour, and migrated in a larger MongoDB project by damz before the hour ended. Wow...
Rethinking watchdog(): Monolog vs log4php
It is based on the famous log4j package from the Java world, and from uses of this package I have seen on customer sites, I feel that it carries a lot of useless baggage, and is - in my opinion - significantly less of a good match than Monolog for Drupal 8.
Monolog vs log4php : equivalences
There is some degree of equivalence between the Monolog and log4php components:
|Log an event||Logger||Logger||Very similar|
|Store an event||Handler||Appender||both can be chained, group, control bubbling (Monolog) / filtering (log4php)|
|Format an event representation||Formatter||Layout||log4php layouts can format a group of events, Monolog formatters format an individual event|
|Massage event data||Processor||Renderer||Not so similar. Monolog processors will often add extra data, while log4php Renderers are typically used to format non-string events as strings.|
Monolog vs log4php : other points of comparison
|Deployment||Composer / Packagist||Maven||Drupal 8 already uses composer|
|Master repository||Github||Apache SVN||Not so significant, but...|
|File layout/naming||PSR-0||Non-compliant with PSR-0|
|Class loading||PSR-0 autoloading||
||Would need tweaking our loading process|
|Configuration||Nothing specified: use code||XML, PHP, info||This is probably the strongest argument for log4php|
|Langages used||PHP||PHP, XML, DTD, XSLT, YAML||The non-PHP languages in log4php are mostly about integration and configuration|
|Actual size: code + tests||3.7k LoC||7.8k LoC||0.4k lines of XML, DTD, XSLT, YAML in log4PHP|
|Actual size: code||1.7k LoC||3.7k LoC||Less than 100 lines of non-PHP code(DTD) in log4php|
|Testing||PHPUnit, with Mock objects||PHPUnit, with Mock objects|
|Loggging destinations provided||Amqp, ChromePHP, Cube, FirePHP, Gelf, MongoDB, Null, RotatingFile, Stream, [Native|Swift]Mailer, Syslog, Test||Console, Echo, [Daily|Rolling]File, Mail[Event], MongoDB, Null, PDO, PHP trigger_event, Socket, Syslog||Monolog Stream subsumes log4j Console, File, and Socket. Soon in Monolog: logstash Handler. My D8 patch for Monolog includes a DBTNG (PDO) Handler.|
|License||MIT License||Apache License, version 2.0|