我有一个用于所有控制器的基类,并且在其中定义了记录器:
public abstract class BaseService
{
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
protected ILogger Logger => logger;
}
public class ChildClass : BaseClass
{
public void DoStuff()
{
Logger.Info("Some info");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我Logger从子类中使用时,日志条目将BaseService显示为记录器。有没有办法告诉日志管理器实例化子类的记录器?
这是您可以执行的操作:
public abstract class BaseService
{
protected ILogger Logger => LogManager.GetLogger(this.GetType().FullName);
}
Run Code Online (Sandbox Code Playgroud)
请注意,GetLogger内部会缓存记录器(针对每个不同的名称),这样您就不会在每次Logger获取属性时都。
这里的技巧是this.GetType().FullName将返回派生类型的名称,而不是BaseService。
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |