【问题标题】:Log4net: Logger instantiationLog4net:记录器实例化
【发布时间】:2012-04-02 15:56:24
【问题描述】:

伙计们。 我对 log4net 中记录器的使用有疑问。在每个类的记录器(静态只读字段)和每个实例的记录器(只读字段)之间进行选择时,有什么更好的方法?就个人而言,当每个类都有记录器时,我看到的唯一缺点是它的实例化:

log4net.LogManager.GetLogger(
        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

由于反射,它看起来不太好。 如果我按以下方式创建记录器:

log4net.LogManager.GetLogger(typeof(MyClass))

我可能会不小心出现复制/粘贴错误,而不是 typeof(MyClass) 我可以提供 typeof(SomeOtherClass),这很糟糕。 p>

当每个实例使用记录器时,我可以使用:

log4net.LogManager.GetLogger(this.GetType())

这种方法不使用反射并且没有复制/粘贴错误。

对此还有其他想法吗?

【问题讨论】:

  • 你说的因为反射看起来不太好看是什么意思?

标签: log4net log4net-configuration


【解决方案1】:

除了使用依赖注入会更好之外,我认为您的方法很好。我过去自己也使用过这种方法。

【讨论】:

  • 哪一个?每个实例?我还考虑过 DIing LogManager。但是,这意味着 LogManager 应该基本上传递给每个组件,为这些类型的构造函数添加一个强制参数,这会使类复杂化。当然,我将 log4net 隐藏在日志抽象后面,但是,我认为在这里应用 DI 是不值得的,因为这是日志。
猜你喜欢
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
相关资源
最近更新 更多