Note that this is probably not that hard to implement from outside of Common.Logging. I imagine that I could just copy the logging abstractions that I want to support (log4net, NLog, for example) - or maybe subclass the existing implemetations - and add another interface "ILogDirect" (or something). ILogDirect would have a single method (or it could have more), Log(LogInfo info). The implementation of Log would simply, assuming the log level check passes, take the properties from the LogInfo structure/class and create the corresponding LoggingEvent or LogEventInfo class as described above, and log it using the underlying logger.