从 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] 实际上并没有解决任何问题。

所以一些相关的问题:

  1. 为什么 objects 不是 class?如果它们不是 classes 那么我怎么能在其中放置一个 main 方法呢?!?;和
  2. 如何获得 MyApp 的 SLF4J 记录器?
  1. 对象确实有一个class,但我不认为它被命名为对象名称

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