以下课程在Windsor Castle容器中注册:
namespace MyNamespace
{
class Foo : IFoo
{
public Foo(ILog log)
{
_log = log;
}
...
}
}
ILog
是一个log4net记录器,目前注册如下:
Component.For<ILog>().UseFactoryMethod(
() => LogManager.GetLogger(Assembly.GetCallingAssembly().FullName));
我想创建一个名为调用类型的记录器(在本例中为"MyNamespace.Foo"
),而不是像调用程序集一样。有没有办法做到这一点,除了使用反射来玩堆栈帧?
答案 0 :(得分:3)
城堡温莎伐木设施可以满足您的需求。它已经与log4net或NLog集成(参见:how to set up logging facility)。
如果您仍然好奇,可以检查源代码以了解它是如何完成的。查看log4net Integration source和logging facility源代码,尤其是LoggerResolver类(解析名称)。