有没有办法在不必手动定义日志记录方法的情况下执行以下操作,例如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!")
}
}
替换def error
为
import log.error
如果你想登录很多类而不是每次都重写记录方法,你可以创建一个 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 特征的类的名称,而不是硬编码的名称。