从 Scala 驱动程序内部声明 SLF4J 记录器



我有以下Scala类(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]实际上并没有解决任何事情。

所以一些相关的问题:

  1. 为什么objects不是类?如果它们不是类,那么我到底怎么能侥幸将main方法放入其中?!?;和
  2. 如何获得用于MyApp的SLF4J记录仪?
    对象
  1. 确实有一个类,但我认为它没有被命名为对象名称。

  2. 只需使用 LoggerFactory.getLogger(getClass)