尝试在播放中使用自定义LoggerConfigurator时,不会执行LoggerConfigurator的init方法。

时间:2019-05-14 13:04:19

标签: playframework play-framework-2.7

我正在使用播放框架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被叫的条件吗?

0 个答案:

没有答案