Trying to build up the functionality of this class I ran into a couple problems.  I can't make List<T> or Logger.Warn static.  Given those limitations I think this is pretty good where it is minus the locking code.