在 Java 中我会写logger.getLogger(NameOfClass.class)
. 如何在 Scala 中编写相同的代码?
问问题
600 次
2 回答
9
你可以试试:
logger.getLogger(getClass())
或者:
logger.getLogger(classOf[NameOfClass])
附带说明一下,ScalaLogging提供了一种很好且简单的方法来使用具有类名的记录器,但没有像普通 java 那样的所有样板。你可以在你的类设置中正确地获得一个记录器,你所要做的就是扩展一个 trait Logging
:
class MyClass extends Logging {
logger.debug("This is very convenient ;-)")
}
于 2013-04-02T14:21:47.043 回答
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 不具备所有优势的情况之一:
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 回答