我正在使用播放框架2.7.2
我在logger-configurator.properties
目录中添加了文件conf
。
在此文件中,只有一行:
play.logger.configurator=com.my.MyLoggerConfigurator
文件com.my.MyLoggerConfigurator
的声明如下:
package com.my
import java.io.File
import java.net.URL
import org.slf4j.ILoggerFactory
import play.api.{Configuration, Environment, Mode}
import play.api.libs.logback.LogbackLoggerConfigurator
class MyLoggerConfigurator extends LogbackLoggerConfigurator {
println("@@@@@@@@@@@@@@@@@@@@constructor")
override def init(rootPath: File, mode: Mode): Unit = {
println("######################init")
super.init(rootPath, mode)
}
override def loggerFactory: ILoggerFactory = {
println("######################loggerFactory")
super.loggerFactory
}
override def configure(env: Environment,
configuration: Configuration,
optionalProperties: Map[String, String]): Unit = {
println("################configure1")
super.configure(env, configuration, optionalProperties)
}
override def configure(properties: Map[String, String], config: Option[URL]): Unit = {
println("################configure2")
super.configure(properties, config)
}
}
我在做sbt run
时看到
@@@@@@@@@@@@@@@@@@@@constructor
################configure1
################configure2
######################loggerFactory
但从未调用init
。
所以我的问题是:
在哪种情况下称为init
?根据我在文档中看到的内容,它仅处于开发模式,但我认为sbt run
可以在开发模式下运行该应用程序?
有人知道init
被叫的条件吗?