Hi,
1. great code, great work!
2. Maybe I didnt get some points but: wouldnt it be "better" to have instead of a explicit creation of a ILog instance, to have a "Helper" class with the same static methods, like the ILog interfcae.
Advantage 1: you can get rid about explicitly call ILog=LogManager."WatheverInstance", a shared constructor instanciates the configured Implementation, just call LogHelper.ILogMethod whatever
Advantage 2: performance: you can add to a existing, or a additional Method the conditional compilation Attribute (for ex.: Conditional("VERBOSE")) so its possible to switch on/off extensive logging by a compile-switched and therefore doesnt generate Logging overhead at all (compared with a "empty" Logging Method call).