2

有没有办法在不必手动定义日志记录方法的情况下执行以下操作,例如def error

object FooBar {
  lazy val log = LoggerFactory.getLogger("AndroidProxy")
  def error(msg: String) = log.error(msg)


  def my_method(): Unit = {
    error("This is an error!")
  }
}
4

2 回答 2

5

替换def error

import log.error
于 2013-02-16T01:11:34.173 回答
1

如果你想登录很多类而不是每次都重写记录方法,你可以创建一个 trait

trait Logging {
    lazy val logger = LoggerFactory.getLogger(getClass())

    def error(msg: => String) = log.error(msg)
}

然后在你需要记录的类中你做......

class MyClass extend Logging {
    def method() {
        //do stuff
        error("oups!")
    }
}

通常最好按名称传递 msg 参数(使用 :=> String),以便仅在使用时才评估字符串参数。

另外,请注意 getClass 现在是记录器的名称。这很有帮助,因为现在记录器的名称是扩展 Logging 特征的类的名称,而不是硬编码的名称。

于 2013-02-16T01:22:37.367 回答