Scala Slick 驱动程序日志记录
Scala Slick Driver Logging
我正在使用以下版本的 Slick 驱动程序:
"com.typesafe.slick" %% "slick" % "3.3.1",
"com.typesafe.slick" %% "slick-hikaricp" % "3.3.1"
我已经在我的 class AnimalCounter.scala
中导入了这些
import slick.jdbc.PostgresProfile.api._
import slick.jdbc.GetResult
而且,我有以下 class 结构 ...
class AnimalCounter {
val db = Database.forConfig("animaldb")
def get(a: Animal): Future[Option[Animal]] =
db.run(....do something......)
def getOrCreate(a: Animal): Future[Option[Animal]] =
db.run(....do something......)
}
那么,如何设置内置的 slick 日志记录来记录幕后发生的所有数据库操作?
这是我如何让它工作的答案。我认为上面提到的@vamsi 的方法也行得通。但是,在我的案例中要记住的重要一点是我需要删除此依赖项,因为它旨在抑制来自 slick
的日志。所以如果你已经有这个依赖,请删除它。
"org.slf4j" % "slf4j-nop" % "1.7.26"
删除 ^^ 依赖项后,请像这样配置您的 logback.xml:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%level] [%date{MM/dd/yyyy HH:mm:ss.SSS}] [SLICK] [%logger{1000}] %green(%X{debugId}) %msg%n</pattern>
</encoder>
</appender>
<root level="${SLICK_LOG_LEVEL:-INFO}">
<appender-ref ref="STDOUT" />
</root>
<logger name="slick.basic.BasicBackend.action" level="${log_action:-inherited}" />
<logger name="slick.basic.BasicBackend.stream" level="${log_stream:-inherited}" />
<logger name="slick.compiler" level="OFF" />
<logger name="slick.compiler.QueryCompiler" level="OFF" />
<logger name="slick.compiler.QueryCompilerBenchmark" level="OFF" />
<logger name="slick.jdbc.DriverDataSource" level="${log_jdbc_driver:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.statement" level="${log_jdbc_statement:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.parameter" level="${log_jdbc_parameter:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.benchmark" level="${log_jdbc_bench:-inherited}" />
<logger name="slick.jdbc.StatementInvoker.result" level="${log_jdbc_result:-inherited}" />
<logger name="slick.jdbc.JdbcModelBuilder" level="${log_createModel:-inherited}" />
<logger name="slick.memory.HeapBackend" level="${log_heap:-inherited}" />
<logger name="slick.memory.QueryInterpreter" level="${log_interpreter:-inherited}" />
<logger name="slick.relational.ResultConverterCompiler" level="${log_resultConverter:-inherited}" />
<logger name="slick.util.AsyncExecutor" level="${log_asyncExecutor:-inherited}" />
</configuration>
我正在使用以下版本的 Slick 驱动程序:
"com.typesafe.slick" %% "slick" % "3.3.1",
"com.typesafe.slick" %% "slick-hikaricp" % "3.3.1"
我已经在我的 class AnimalCounter.scala
import slick.jdbc.PostgresProfile.api._
import slick.jdbc.GetResult
而且,我有以下 class 结构 ...
class AnimalCounter {
val db = Database.forConfig("animaldb")
def get(a: Animal): Future[Option[Animal]] =
db.run(....do something......)
def getOrCreate(a: Animal): Future[Option[Animal]] =
db.run(....do something......)
}
那么,如何设置内置的 slick 日志记录来记录幕后发生的所有数据库操作?
这是我如何让它工作的答案。我认为上面提到的@vamsi 的方法也行得通。但是,在我的案例中要记住的重要一点是我需要删除此依赖项,因为它旨在抑制来自 slick
的日志。所以如果你已经有这个依赖,请删除它。
"org.slf4j" % "slf4j-nop" % "1.7.26"
删除 ^^ 依赖项后,请像这样配置您的 logback.xml:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%level] [%date{MM/dd/yyyy HH:mm:ss.SSS}] [SLICK] [%logger{1000}] %green(%X{debugId}) %msg%n</pattern>
</encoder>
</appender>
<root level="${SLICK_LOG_LEVEL:-INFO}">
<appender-ref ref="STDOUT" />
</root>
<logger name="slick.basic.BasicBackend.action" level="${log_action:-inherited}" />
<logger name="slick.basic.BasicBackend.stream" level="${log_stream:-inherited}" />
<logger name="slick.compiler" level="OFF" />
<logger name="slick.compiler.QueryCompiler" level="OFF" />
<logger name="slick.compiler.QueryCompilerBenchmark" level="OFF" />
<logger name="slick.jdbc.DriverDataSource" level="${log_jdbc_driver:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.statement" level="${log_jdbc_statement:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.parameter" level="${log_jdbc_parameter:-inherited}" />
<logger name="slick.jdbc.JdbcBackend.benchmark" level="${log_jdbc_bench:-inherited}" />
<logger name="slick.jdbc.StatementInvoker.result" level="${log_jdbc_result:-inherited}" />
<logger name="slick.jdbc.JdbcModelBuilder" level="${log_createModel:-inherited}" />
<logger name="slick.memory.HeapBackend" level="${log_heap:-inherited}" />
<logger name="slick.memory.QueryInterpreter" level="${log_interpreter:-inherited}" />
<logger name="slick.relational.ResultConverterCompiler" level="${log_resultConverter:-inherited}" />
<logger name="slick.util.AsyncExecutor" level="${log_asyncExecutor:-inherited}" />
</configuration>