Я не уверен, насколько это эффективно, но оно должно работать.log4net имеет перегрузку, которая принимает тип, и вы часто хотите присвоить регистратору имя после полного имени типа.
void Main()
{
var foo = new Bar.Foo();
ILog logger = foo.GetLogger();
}
public static class LogHelper
{
public static ILog GetLogger(this object o)
{
return LogManager.GetLogger(o.GetType());
}
}
namespace Bar
{
public class Foo {}
}
// Faking log4net
public class ILog {}
public class LogManager
{
public static ILog GetLogger(Type type)
{
Console.WriteLine("Logger: " + type.ToString());
return null;
}
}
Выше выводится «Logger: Bar.Foo».
PS Используйте «this.GetLogger ()», если вы хотите использовать регистратор для текущего класса (при условии нестатического метода).