首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在游戏控制台中有选择地禁用log4j调试日志

在游戏控制台中有选择地禁用log4j调试日志
EN

Stack Overflow用户
提问于 2012-07-24 20:16:48
回答 2查看 2.5K关注 0票数 0

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

代码语言:javascript
复制
application.conf
logger.root=ERROR
logger.play=ERROR
logger.application=ERROR

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

以下是流调试日志的示例

代码语言:javascript
复制
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.c.t.ThreadSafeClientConnManager - Closing connections idle longer than 60 SECONDS
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.c.t.ThreadSafeClientConnManager - Closing connections idle longer than 60 SECONDS
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS
13:10:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.c.t.ThreadSafeClientConnManager - Closing connections idle longer than 60 SECONDS
13:10:18.819 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS
13:11:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.c.t.ThreadSafeClientConnManager - Closing connections idle longer than 60 SECONDS
13:11:18.818 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS
13:11:18.819 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.c.t.ThreadSafeClientConnManager - Closing connections idle longer than 60 SECONDS
13:11:18.819 [java-sdk-http-connection-reaper] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Closing connections idle longer than 60 SECONDS

首先要说明的是,当我从命令行运行Play应用程序时,日志设置是强制的,当我在play console中运行它时,这些设置是不强制的。

EN

回答 2

Stack Overflow用户

发布于 2012-07-24 20:54:53

我不认为log4j实际上在这里使用。Apache客户机是生成调试的库,它通过进行日志记录。

Play2使用带有logback后端的SLF4J API。

您的类路径上有一个名为jcl-overslf4j的库,它会导致日志消息转到apache到通过SLF4J的桥梁,然后转到logback。(我知道,这是一种让SLF4J充当所有其他人的正面角色的尝试,而它的后端则是“一个伐木者来统治他们”)。

play2文档表示logger.xml应该允许您完全自定义日志设置,因此我认为当存在logger.xml文件时,application.conf设置没有任何影响。

logger.xml需要是一个完整的注销配置文件。我不确定您是否已经发布了logger.xml的全部内容,或者仅仅发布了更改。

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

代码语言:javascript
复制
<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>

如果这样做不起作用,则将最重要的一行改为:

代码语言:javascript
复制
<configuration debug="true">

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

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2012-11-26 00:38:18

这对我起了作用:

代码语言:javascript
复制
import org.slf4j.{Logger, LoggerFactory}

LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME).asInstanceOf[
  ch.qos.logback.classic.Logger].setLevel(ch.qos.logback.classic.Level.INFO)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11638664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档