【问题标题】:Turn Slick logging off关闭 Slick 注销
【发布时间】:2014-05-30 01:14:44
【问题描述】:

Slick 用大量的日志消息填满了控制台。就像文档中建议的那样,我想使用slf4j-nop,因此关闭了日志记录,但 Akka 需要自己的 slf4j 库。

所以我留下了 Slick 也使用的 akka-slf4j_2.10。我已经尝试了很多东西。我的application.conf 中包含这个(尝试使用和不使用“):

logger="OFF"
logger.scala.slick="OFF"
logger.scala.slick.session="OFF"
logger.scala.slick.jdbc.JdbcBackend.statement="OFF"
logger.scala.slick.jdbc="OFF"

它的影响为零。 有人可以帮我关闭此注销功能,以便我再次喜欢 Slick 吗?

编辑

我收到的一些日志消息:

17:16:56.706 [seating-akka.actor.default-dispatcher-8] DEBUG scala.slick.ast.Node$ - Assigned type Int/INTEGER to node InsertColumn SEAT_ID

17:16:56.710 [seating-akka.actor.default-dispatcher-8] DEBUG scala.slick.compiler.QueryCompiler - After phase insertCompiler:

【问题讨论】:

    标签: scala akka slf4j slick


    【解决方案1】:

    我已通过将logback.xml 添加到src/main/resources 来修复它:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <logger name="scala.slick" level="INFO" />
    </configuration>
    

    我找到了这个somewhere in a Github project

    【讨论】:

    • 供一般参考。在上面的示例中,真正控制 slick 的日志记录级别的是 &lt;logger name="scala.slick" level="INFO" /&gt; 行,它专门设置了 Slick 的日志记录级别。每当 slick 日志记录(继承的或专门设置的)设置为 DEBUG 时,Slick 将始终生成一堆 QueryCompiler* 消息。在您的原始帖子中,它显示根/基本日志记录级别设置为调试,因此 Slick logback 继承了这一点,并为查询的 runtime 编译输出了一堆 QueryCompiler 消息(有些可能是预编译)
    • 确认它有效。如果您使用的是 Slick 3.0.0+,请使用 &lt;logger name="slick" level="INFO"/&gt;
    • 我在 slick 3.2.0 上,但这里没有任何效果。我是否注定要使用令人难以置信的嘈杂构建日志?
    【解决方案2】:

    here 给出的 logback.xml 文件解决了我的问题。

    <configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>*** \(%logger{30}\)%green(%X{debugId}) %msg%n</pattern>
            </encoder>
        </appender>
        <root level="${log.root:-info}">
            <appender-ref ref="STDOUT" />
        </root>
        <logger name="slick.basic.BasicBackend.action"          level="${log.action:-info}" />
        <logger name="slick.basic.BasicBackend.stream"          level="${log.stream:-info}" />
        <logger name="slick.compiler"                           level="${log.qcomp:-info}" />
        <logger name="slick.compiler.QueryCompiler"             level="${log.qcomp.phases:-inherited}" />
        <logger name="slick.compiler.QueryCompilerBenchmark"    level="${log.qcomp.bench:-inherited}" />
        <logger name="slick.compiler.Inline"                    level="${log.qcomp.inline:-inherited}" />
        <logger name="slick.compiler.AssignUniqueSymbols"       level="${log.qcomp.assignUniqueSymbols:-inherited}" />
        <logger name="slick.compiler.InferTypes"                level="${log.qcomp.inferTypes:-inherited}" />
        <logger name="slick.compiler.ExpandTables"              level="${log.qcomp.expandTables:-inherited}" />
        <logger name="slick.compiler.EmulateOuterJoins"         level="${log.qcomp.emulateOuterJoins:-inherited}" />
        <logger name="slick.compiler.ForceOuterBinds"           level="${log.qcomp.forceOuterBinds:-inherited}" />
        <logger name="slick.compiler.RemoveMappedTypes"         level="${log.qcomp.removeMappedTypes:-inherited}" />
        <logger name="slick.compiler.CreateResultSetMapping"    level="${log.qcomp.createResultSetMapping:-inherited}" />
        <logger name="slick.compiler.ExpandSums"                level="${log.qcomp.expandSums:-inherited}" />
        <logger name="slick.compiler.ExpandRecords"             level="${log.qcomp.expandRecords:-inherited}" />
        <logger name="slick.compiler.ExpandConditionals"        level="${log.qcomp.expandConditionals:-inherited}" />
        <logger name="slick.compiler.FlattenProjections"        level="${log.qcomp.flattenProjections:-inherited}" />
        <logger name="slick.compiler.CreateAggregates"          level="${log.qcomp.createAggregates:-inherited}" />
        <logger name="slick.compiler.RewriteJoins"              level="${log.qcomp.rewriteJoins:-inherited}" />
        <logger name="slick.compiler.RemoveTakeDrop"            level="${log.qcomp.removeTakeDrop:-inherited}" />
        <logger name="slick.compiler.ResolveZipJoins"           level="${log.qcomp.resolveZipJoins:-inherited}" />
        <logger name="slick.compiler.HoistClientOps"            level="${log.qcomp.hoistClientOps:-inherited}" />
        <logger name="slick.compiler.ReorderOperations"         level="${log.qcomp.reorderOperations:-inherited}" />
        <logger name="slick.compiler.MergeToComprehensions"     level="${log.qcomp.mergeToComprehensions:-inherited}" />
        <logger name="slick.compiler.OptimizeScalar"            level="${log.qcomp.optimizeScalar:-inherited}" />
        <logger name="slick.compiler.FixRowNumberOrdering"      level="${log.qcomp.fixRowNumberOrdering:-inherited}" />
        <logger name="slick.compiler.PruneProjections"          level="${log.qcomp.pruneProjections:-inherited}" />
        <logger name="slick.compiler.RewriteDistinct"           level="${log.qcomp.rewriteDistinct:-inherited}" />
        <logger name="slick.compiler.RewriteBooleans"           level="${log.qcomp.rewriteBooleans:-inherited}" />
        <logger name="slick.compiler.SpecializeParameters"      level="${log.qcomp.specializeParameters:-inherited}" />
        <logger name="slick.compiler.CodeGen"                   level="${log.qcomp.codeGen:-inherited}" />
        <logger name="slick.compiler.RemoveFieldNames"          level="${log.qcomp.removeFieldNames:-inherited}" />
        <logger name="slick.compiler.InsertCompiler"            level="${log.qcomp.insertCompiler:-inherited}" />
        <logger name="slick.compiler.VerifyTypes"               level="${log.qcomp.verifyTypes:-inherited}" />
        <logger name="slick.jdbc.DriverDataSource"              level="${log.jdbc.driver:-info}" />
        <logger name="slick.jdbc.JdbcBackend.statement"         level="${log.jdbc.statement:-info}" />
        <logger name="slick.jdbc.JdbcBackend.parameter"         level="${log.jdbc.parameter:-info}" />
        <logger name="slick.jdbc.JdbcBackend.benchmark"         level="${log.jdbc.bench:-info}" />
        <logger name="slick.jdbc.StatementInvoker.result"       level="${log.jdbc.result:-info}" />
        <logger name="slick.jdbc.JdbcModelBuilder"              level="${log.createModel:-info}" />
        <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>
    

    【讨论】:

      【解决方案3】:

      您是否尝试过关闭 application.conf 中的 akka 登录?

      akka {
        stdout-loglevel = "OFF"
        loglevel = "OFF"
      }
      

      请参阅documentation 中的“关闭日志记录”部分。

      【讨论】:

      • 是的,我有。没有成功。日志记录不是来自 Akka,而是来自 Slick。
      • 尝试提供一个更具体的问题 - 您想要删除的日志消息示例,这样 Slick 的人可能会弄清楚。抱歉,我自己没用过。
      • 我已将它们包括在内;)。
      【解决方案4】:

      上述步骤不起作用的最常见原因是您的 xx.xml logback 文件未被读取。检查它是否在正确的类路径中。

      在 xx.xml 文件中更改 slick 日志记录级别所需的唯一设置是:

      <logger name="slick"  level="INFO" />
      

      如果是 sbt,如果资源文件夹不在 src/main 下,路径可以如下提及:

      resourceDirectory in Compile := baseDirectory.value / "conf"
      

      当 sbt 组装完成后,它会将 logback 配置文件转储到 fat jar 中

      如果从 jar 运行

      java -Dlogback.configurationFile=dev-logger.xml -Dfile.ending=UTF8  -cp $SCALA_HOME/lib/scala-library.jar  -jar myProject.jar -Dconfig.file=application.conf
      

      如果来自 Intellij,请确保包含 logback conf 文件(如 dev-logger.xml)的文件夹被标记为资源文件夹。如果配置文件是 logback.xml,它会默认使用,否则你需要在运行配置的 VM 设置中提及它

      【讨论】:

        猜你喜欢
        • 2013-02-23
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 2012-12-04
        相关资源
        最近更新 更多