从 Scala 驱动程序内部声明 SLF4J 记录器
Declaring an SLF4J logger from inside a Scala driver
我有以下 Scala class (MyApp.scala
):
package me.myapp
import org.slf4j.Logger
import org.slf4j.LoggerFactory
object MyApp {
val logger = LoggerFactory.getLogger(classOf[MyApp])
def main(args : Array[String]) : Unit = {
logger.info("Well hello SLF4J!")
}
}
当我 运行 出现编译错误时:
/Users/myuser/workspace/myapp/src/main/scala/me/myapp/MyApp.scala:7: not found: type MyApp
val logger = LoggerFactory.getLogger(classOf[MyApp])
^
one error found
所以我需要 MyApp
成为一个 object
(而不是 class
)这样我就可以有一个静态的 main
方法(对于我的可执行 JAR),但似乎,因为 MyApp
是一个 object
,所以 classOf[MyApp]
实际上并没有解决任何问题。
所以一些相关的问题:
- 为什么
objects
不是 class?如果它们不是 classes 那么我怎么能在其中放置一个 main
方法呢?!?;和
- 如何获得
MyApp
的 SLF4J 记录器?
对象确实有一个class,但我不认为它被命名为对象名称
只需使用LoggerFactory.getLogger(getClass)
我有以下 Scala class (MyApp.scala
):
package me.myapp
import org.slf4j.Logger
import org.slf4j.LoggerFactory
object MyApp {
val logger = LoggerFactory.getLogger(classOf[MyApp])
def main(args : Array[String]) : Unit = {
logger.info("Well hello SLF4J!")
}
}
当我 运行 出现编译错误时:
/Users/myuser/workspace/myapp/src/main/scala/me/myapp/MyApp.scala:7: not found: type MyApp
val logger = LoggerFactory.getLogger(classOf[MyApp])
^
one error found
所以我需要 MyApp
成为一个 object
(而不是 class
)这样我就可以有一个静态的 main
方法(对于我的可执行 JAR),但似乎,因为 MyApp
是一个 object
,所以 classOf[MyApp]
实际上并没有解决任何问题。
所以一些相关的问题:
- 为什么
objects
不是 class?如果它们不是 classes 那么我怎么能在其中放置一个main
方法呢?!?;和 - 如何获得
MyApp
的 SLF4J 记录器?
对象确实有一个class,但我不认为它被命名为对象名称
只需使用LoggerFactory.getLogger(getClass)