使用 NLog 时是否应该继承 class 记录器?

Should I inherit the class logger when using NLog?

当从派生 class 记录日志时,我应该从基础 class 继承 class-logger 实例,还是实例化一个新实例?

即哪个更好:

public class Base
{
    private static Logger _logger = LogManager.GetCurrentClassLogger();
    private void Foo()
    {
        _logger.Info("Hello world");
    }
}

public class Derived : Base
{
    new private static Logger _logger = LogManager.GetCurrentClassLogger();

    private void Fee()
    {
        _logger.Info("Hello world");
    }
}

或:

public class Base
{
    protected static Logger _logger = LogManager.GetCurrentClassLogger();
    private void Foo()
    {
        _logger.Info("Hello world");
    }
}

public class Derived : Base
{
    private void Fee()
    {
        _logger.Info("Hello world");
    }
}

你应该使用一个新的。

LogManager.GetCurrentClassLogger 创建一个名为当前 class 的记录器。如果您使用父级的 class 记录器,您将丢失 class 执行日志记录的信息,看起来好像日志是由父级 class 完成的。大多数时候,您希望在记录时获得尽可能准确的信息。