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