我是否可以为实现特征的记录器与实现该特征的类的记录器分开配置

问题描述 投票:0回答:1

我的play应用程序具有一个定义为trait的组件,如下所示:它是数据库连接的接口。

trait CassandraRepositoryComponents {
  def environment: Environment
  def configuration: Configuration
  def applicationLifecycle: ApplicationLifecycle
  val utilities:HelperMethods 
  val cassandraConnectionService = CassandraConnectionManagementService()

  val myLogger = LoggerFactory.getLogger(this.getClass.getName)
...
}

AppComponent类实现了特征。

class AppComponents (context: Context) extends BuiltInComponentsFromContext(context)
  with CassandraRepositoryComponents /
..
}

可以单独控制AppComponentCassandraRepositoryComponents的日志记录。目前,CassandraRepositoryComponents采用AppComponent的日志记录配置可能是因为主类是AppComponent。那么代码val myLogger = LoggerFactory.getLogger(this.getClass.getName)获得了AppComponent类名称?我怎样才能做到这一点?可能我需要将CassandraRepositoryComponentstrait更改为其他内容。那会是什么?

更新我试图为CassandraRepositoryComponents]提供一个硬编码的名称

val cassandraRepositoryComponentsLogger = LoggerFactory.getLogger("CassandraRepositoryComponents")

但是即使在logback.xml中启用了所有级别,我也看不到日志记录。

  <logger name="cassandraRepositoryComponentsLogger" level="ALL" additivity="false"> <appender-ref ref="STDOUT"/> </logger>

CassandraRepositoryComponents的一种方法中,我正在使用记录器和println,但只能看到println消息。

println(s"database will connect with keyspace ${keyspaceName}") //SHOWS
    cassandraRepositoryComponentsLogger.debug(s"debugger - database will connect with keyspace ${keyspaceName}") //DOESN'T SHOW

我的播放应用程序具有一个定义为特征的组件,如下所示:它是数据库连接的接口。特质CassandraRepositoryComponents {def environment:Environment def ...

scala playframework-2.6
1个回答
0
投票

您应该在LoggerFactory.getLogger(...)<logger name="..."中使用相同的名称。

© www.soinside.com 2019 - 2024. All rights reserved.