The mostly looks good with two changes.
I decided to add a new method called getDefaultLayout(), which will return LoggerLayoutSimple, but can be overriden by derived appenders. This will be called instead of hard-coding LoggerLayoutSimple as default. The reason for this is that for some appenders, LoggerLayoutSimple makes no sense as default layout. For example, the socket appender which should default to either XML or serialized layout (once
LOG4PHP-154 is finished).
I'm not sure why you removed the check "if empty($class)" from LoggerConfigurator and the tests. I think it's still useful. I have skipped that change for the moment.