`init` метод LoggerConfigurator` не выполняется при попытке использовать пользовательский LoggerConfigurator в игре - PullRequest
0 голосов
/ 14 мая 2019

Я использую Play Framework 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?

...