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