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 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 に答える