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

时间:2017-01-10 03:20:36

标签: scala reflection 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),但它似乎是因为MyAppobjectclassOf[MyApp]实际上并没有解决任何问题。

所以有一些相关的问题:

  1. 为什么objects没有上课?如果他们不上课,那么我怎么能在其中加入一个main方法呢?!?;和
  2. 如何为MyApp获取SLF4J记录器?

1 个答案:

答案 0 :(得分:1)

  1. 对象确实有一个类,但我不认为它被命名为对象名。

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