Java では、 と書きlogger.getLogger(NameOfClass.class)
ます。Scalaで同じものを書く方法は?
2 に答える
1
シングルトン コンパニオン オブジェクトでロガーを定義することを忘れないでください。
object MyClass {
// Commons logging
private val clLogger = LogFactory.getLog(getClass())
// java.util.logging
private val juLogger = Logger.getLogger(getClass().toString)
}
class MyClass {
import MyClass._
...
}
これを行う必要がある理由は、フィールドを配置すると、そのクラスのオブジェクトのclass
すべてのインスタンスでロガー ファクトリに戻るインスタンス フィールドになるためです。new
これは、一部のクラスでは不要または許容できないパフォーマンスになる可能性があります。
この場合、Scala ではクラス (静的) フィールドとインスタンス フィールドが分離されているため、これは Java で行う場合よりもはるかに困難になります。Scala がすべての利点を持っていないケースの 1 つ:
class MyClass {
// Commons logging
private static final Log clLogger = LogFactory.getLog(MyClass.class)
// java.util.logging
private static final Logger juLogger = Logger.getLogger(MyClass.class.toString)
...
}
于 2013-04-02T15:35:53.587 に答える