代码之家  ›  专栏  ›  技术社区  ›  ktutnik

为什么日志字段应该是私有静态的?

  •  4
  • ktutnik  · 技术社区  · 15 年前

    这里是C#:

    private static readonly ILog log = LogManager.GetLogger(typeof (MyClass));
    

    不仅在C语言中,而且在另一种语言中我也看到了相同的。。 有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  12
  •   SLaks    15 年前

    它是私有的,因为其他类不应该访问它 MyClass '日志。

    它是 static 因为它不依赖于类实例。(以便 静止的

        2
  •  3
  •   Aren    15 年前

    这样字段就不会被子类继承。

    举个例子:

    class BaseFoobar
    {
       public static readonly ILog log = LogManager.GetLogger(typeof(BaseFoobar));
    }
    
    class SpecializedFoobar : BaseFoobar
    {
       public void Whatever()
       {
          log.Error("I exploded");
       }
    }
    

    如果 SpecializedFoobar Whatever() 函数被调用时,共同响应日志将无效:

    [MyApp.BaseFoobar]: ERROR: I exploded