0
我有以下的Scala類(MyApp.scala
)內部的SLF4J記錄器:聲明從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
不是類?如果他們不是班級,那麼我可以放棄將main
方法放在裏面嗎?和 - 我怎樣才能得到一個SLF4J記錄器
MyApp
?
感謝@ C4stor(+1),但是當我用'LoggerFactory.getLogger(的getClass)'它產生的日誌信息,如:'[主] INFO我.myapp.MyApp $ - 好的你好SLF4J!'。請注意,在課程名稱末尾有流氓美元符號(「'$」)?任何方式擺脫它?再次感謝! – smeeb
你可以使用LoggerFactory.getLogger(「你想要的任何字符串」)來自定義顯示名稱 – C4stor
我猜測美元符號被添加到那裏,因爲Scala可能把對象當作內部/私有類來處理? – smeeb