我有这个应用程序使用Play框架和Scala,我希望有一个服务,在我的应用程序启动时执行一个方法。我正在做How do I perform an action on server startup in the Scala Play Framework?所说的一切。我的Play版本是2.6,我没有使用GlobalSettings。
package bootstrap
import com.google.inject.AbstractModule
class EagerLoaderModule extends AbstractModule {
override def configure() = {
println("EagerLoaderModule.configure")
bind(classOf[InitSparkContext]).to(classOf[InitSparkContextImpl]).asEagerSingleton()
}
}
在application.conf
我已加入第play.modules.enabled += "bootstrap.EagerLoaderModule"
行。下面是我想要启动Spark上下文的服务。
package bootstrap
import javax.inject.{Inject, Singleton}
import play.api.inject.ApplicationLifecycle
import scala.concurrent.Future
trait InitSparkContext {
def init(): Unit
def stop(): Unit
}
@Singleton
class InitSparkContextImpl @Inject()(appLifecycle: ApplicationLifecycle) extends InitSparkContext {
override def init(): Unit = println("InitSparkContext.start")
override def stop(): Unit = println("InitSparkContext.stop")
appLifecycle.addStopHook { () =>
stop()
Future.successful(())
}
init()
}
控制台上没有打印任何内容,即使println("EagerLoaderModule.configure")
没有打印....
答案 0 :(得分:0)
您无法在播放应用程序中使用println,您需要设置Logger。所以:
val log = play.api.Logger(getClass)
log.info("This happened")
然后您可以使用logback文件配置日志文件: 以下是有关如何配置它的一些详细信息: https://www.playframework.com/documentation/2.6.x/SettingsLogger