Scala 在播放控制台中选择性地禁用log4j调试日志

Scala 在播放控制台中选择性地禁用log4j调试日志,scala,playframework,log4j,playframework-2.0,crawler4j,Scala,Playframework,Log4j,Playframework 2.0,Crawler4j,我有一个Play 2.0应用程序,从命令行运行Play console。在我使用的某个库中,它使用了log4j,并开始为[crawler4j][1]流式调试输出,我试图找出如何在播放控制台中有选择地禁用该输出。我在application.conf和logger.xml中尝试了更改以下内容,但没有任何运气 application.conf logger.root=ERROR logger.play=ERROR logger.application=ERROR logger.xml <log

我有一个Play 2.0应用程序,从命令行运行
Play console
。在我使用的某个库中,它使用了
log4j
,并开始为
[crawler4j][1]
流式调试输出,我试图找出如何在播放控制台中有选择地禁用该输出。我在
application.conf
logger.xml
中尝试了更改以下内容,但没有任何运气

application.conf
logger.root=ERROR
logger.play=ERROR
logger.application=ERROR

logger.xml
<logger name="org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager" level="ERROR"/>

需要明确的是,当我从命令行运行Play应用程序时,日志设置是强制执行的,只有当我从
播放控制台运行它时,日志设置才不会强制执行。

我认为log4j在这里没有实际使用。ApacheHTTP客户端是生成调试的库,它通过ApacheCommons日志记录日志

Play2使用SLF4J API和一个logback后端

在类路径上有一个名为jcl-over-slf4j的库,它会导致日志消息进入apachecommons日志,然后返回。(我知道这很复杂,但这是一种允许SLF4J充当所有其他人的门面的尝试,其后端是“一个记录器来管理所有人”)

indicate logger.xml应该允许您完全自定义日志设置,因此我认为当存在logger.xml文件时,application.conf设置没有任何效果

logger.xml需要是完整的。我不确定您是否发布了logger.xml的全部内容,或者只是发布了更改

要抑制如图所示的输出,您应该能够将logger.xml的内容设置为以下内容:

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.apache.http.impl.conn.tsccm" level="error" />

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>

</configuration>

%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
如果这不起作用,请将顶行更改为:

<configuration debug="true">

这将导致logback记录其配置自身的尝试。这可能会提供更多的提示


希望这有帮助。

我认为log4j在这里实际上没有被使用。ApacheHTTP客户端是生成调试的库,它通过ApacheCommons日志记录日志

Play2使用SLF4J API和一个logback后端

在类路径上有一个名为jcl-over-slf4j的库,它会导致日志消息进入apachecommons日志,然后返回。(我知道这很复杂,但这是一种允许SLF4J充当所有其他人的门面的尝试,其后端是“一个记录器来管理所有人”)

indicate logger.xml应该允许您完全自定义日志设置,因此我认为当存在logger.xml文件时,application.conf设置没有任何效果

logger.xml需要是完整的。我不确定您是否发布了logger.xml的全部内容,或者只是发布了更改

要抑制如图所示的输出,您应该能够将logger.xml的内容设置为以下内容:

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.apache.http.impl.conn.tsccm" level="error" />

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>

</configuration>

%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
如果这不起作用,请将顶行更改为:

<configuration debug="true">

这将导致logback记录其配置自身的尝试。这可能会提供更多的提示

希望这能有所帮助。

这对我来说很有用:

import org.slf4j.{Logger, LoggerFactory}

LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME).asInstanceOf[
  ch.qos.logback.classic.Logger].setLevel(ch.qos.logback.classic.Level.INFO)
这对我很有用:

import org.slf4j.{Logger, LoggerFactory}

LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME).asInstanceOf[
  ch.qos.logback.classic.Logger].setLevel(ch.qos.logback.classic.Level.INFO)

是的,我以前已经做过了,但运气不好。我发现,如果我从命令运行Play应用程序,该设置是受尊重的,问题是当我从Play console中运行它时,它不尊重该设置。我希望有一种方法可以解决这个问题。当你使用logback在控制台内运行play时,你是否看到logback输出在应用程序启动时显示其初始化?如果没有,您可以尝试使用-Dlogger.resource=conf/logger.xml作为命令行选项启动播放控制台?感谢您的建议,使用
-Dlogger.resource=conf/logger.xml
尝试也没有帮助。
logger.resource
是正确的变量吗?下面是确切的命令
play-Dlogger.resource=conf/logger.xml console
logger.resource是根据文档可以使用的三个变量之一。我的想法越来越少了,只剩最后一次了。我误解了你所说的控制台是什么意思,我以为你指的是PlayShell,但现在我意识到你是从里面运行scala控制台的。这可能取决于sbt记录器配置,而不是播放应用程序的配置。有一些关于每个任务记录者的信息。我会在播放提示中尝试:“在控制台中设置日志级别:=Level.Warn”,然后是“控制台”。如果它有效,你可以将它添加到你的sbt构建设置中。付出了巨大的努力,但遗憾的是没有成功,这是一个相当棘手的问题。谢谢你的努力!是的,我以前已经做过了,但运气不好。我发现,如果我从命令运行Play应用程序,该设置是受尊重的,问题是当我从Play console中运行它时,它不尊重该设置。我希望有一种方法可以解决这个问题。当你使用logback在控制台内运行play时,你是否看到logback输出在应用程序启动时显示其初始化?如果没有,您可以尝试使用-Dlogger.resource=conf/logger.xml作为命令行选项启动播放控制台?感谢您的建议,使用
-Dlogger.resource=conf/logger.xml
尝试也没有帮助。
logger.resource
是正确的变量吗?下面是确切的命令
play-Dlogger.resource=conf/logger.xml console
logger.resource是根据文档可以使用的三个变量之一。我的想法越来越少了,只剩最后一次了。我误解了你所说的控制台是什么意思,我以为你指的是PlayShell,但现在我意识到你是从里面运行scala控制台的。这可能取决于sbt记录器配置,而不是播放应用程序的配置。有一些关于每个任务记录者的信息。我会在播放提示中尝试:“在控制台中设置日志级别:=Level.Warn”,然后是“控制台”。如果它有效的话,你可以将它添加到你的sbt构建设置中。付出了巨大的努力,但遗憾的是没有成功,这是非常成功的