The FAQ here--
states that the following are equivalent ways to obtain a logger:
(1) private static readonly ILog log = LogManager.GetLogger(typeof(Foo));
(2) private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
However, these constructs seem to behave differently when the classes involved are generic. When generic classes are involved, I believe the former generates a different logger for each type parameter combination, while the latter generates a different logger if and only if the number of type parameters is different.
TestClass<T, S> can yield "TestClass`2[[System.Int32..." in the former case and "TestClass`2" in the latter.