【发布时间】:2012-01-03 11:07:26
【问题描述】:
我们使用 NLog 来登录 C# MVC3 Web 应用程序。我们所有的控制器都扩展了一个自定义基础“ApplicationController”,让我们可以访问经常需要的方法和成员。
我希望所有控制器都可以通过此基类访问 Logger,但希望了解日志语句源自哪个派生类的详细信息。
我们的应用程序控制器如下所示:
public abstract class ApplicationController : Controller
{
protected Logger _logger;
protected virtual Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}
protected ApplicationController()
{
Context = new Entities();
}
如果派生控制器未覆盖 Logger,则所有语句都将显示它们源自应用程序控制器。目前,我在所有派生控制器中都有基本相同的 Logger 语句。例如:
public class PropertyController : ApplicationController
{
private readonly DatatapeService _datatapeService;
private readonly PropertyService _propertyService;
protected override Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}
显然这是一种糟糕的实施实践。
- 我怎样才能把它弄干?具体来说,我对C#的理解是什么 缺乏完成这个特定的任务?
- 在不暴露 直接记录类 (NLog)?
TIA!
【问题讨论】:
标签: c# inheritance nlog