【问题标题】:which logger to use when using getlogger?使用 getlogger 时使用哪个记录器?
【发布时间】:2014-02-15 00:30:02
【问题描述】:

我有两个记录器:

  1. root 和
  2. 测试1

如果我使用getlogger("test1"),它将使用test1,对吗?

使用getlogger(typeof(Program))时,会使用root吗?

【问题讨论】:

    标签: java log4j log4net


    【解决方案1】:

    使用的记录器在您的 log4j.properties/log4j.xml 中定义,并且基于您的包的名称。

    getLogger(name) 用于记录当前类的名称。

    如果您输入“test1”作为参数,则调用的 log4j 日志行将包含“test1”。

    【讨论】:

      【解决方案2】:

      当您执行getLogger("test1") 时,它将使用名为 test1 的记录器。

      当使用getLogger(class)时,它将检索已使用类名命名的记录器。

      如果您尝试获取 root 记录器,请改用 getRootLogger()

      查看http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#getLogger%28java.lang.String%29了解更多

      根据你的配置,你的类应该默认使用 root。见https://logging.apache.org/log4j/1.2/manual.html

      “作为旁注,让我提一下,在 log4j 中,子记录器仅链接到它们现有的祖先。特别是,名为 com.foo.Bar 的记录器直接链接到根记录器,从而绕过未使用的 com 或 com .foo 记录器。这显着提高了性能并减少了 log4j 的内存占用。” - 来自手册

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-23
        相关资源
        最近更新 更多