ロギングメソッドを手動で定義せずに次のことを行う方法はありますか?例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 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トレイトを拡張するクラスの名前であるため、これは便利です。