玩框架和log4j,将特定包的级别更改为致命级别

玩框架和log4j,将特定包的级别更改为致命级别,log4j,playframework,Log4j,Playframework,我正在编写一个使用WS对象发出HTTP请求的应用程序。然而,当制作它们时(故意为不运行的服务制作),我从内部游戏中得到了一个信息!代码: 15:06:29,613 ERROR ~ java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused to http://127.0.0.1:9091/ 我追溯到WSAsync.get()(https://github.com/playframe

我正在编写一个使用WS对象发出HTTP请求的应用程序。然而,当制作它们时(故意为不运行的服务制作),我从内部游戏中得到了一个信息!代码:

15:06:29,613 ERROR ~ java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused to http://127.0.0.1:9091/
我追溯到WSAsync.get()(https://github.com/playframework/play/blob/master/framework/src/play/libs/ws/WSAsync.java#L199):

由于此消息在我的用例中是非信息性的,我不想显示此错误,因此我决定向log4j.properties添加一个指令,并重新启动相关应用程序(Play!不会自动重新加载):

但是,我仍然在日志中接收消息。我真的不明白,因为它应该在同一个类路径中运行。对此有什么猜测吗?

添加

log4j.debug = TRUE
这将为log4j启用调试:您将看到解析了哪些选项。如果没有看到任何内容,则不会加载属性。可能是打字错误或者文件放错地方了

注意:您还可以指定类名以避免抑制过多(即
log4j.logger.play.libs.ws.WSAsync=FATAL


还要注意:您应该真正使用XML版本进行配置;使用属性非常容易出错…

播放总是记录在一个类别“播放”下。他们总是使用,所以你的方法不起作用。对此问题进行了一些讨论,但为了简单起见,play的开发人员只喜欢一个类别。

log4j:category play.libs.ws设置为fatalthe时,我有三个选项:1。这是在配置log4j之前记录的(不太可能;您会发现这一点)。2.读取配置后,有人重置记录器,3。这个类被加载到另一个类加载器中,它会看到另一个log4j配置。然后我真的希望他们删除get()的log语句,因为它在其他方法中不存在,比如post()put()等等。我可以发出pull请求,但我不确定他们对这个问题的态度。目前它非常不一致,我希望删除日志记录,因为我相信这实际上取决于应用程序,记录什么和不记录什么。我认为拉取请求总是有用的,即使在这种微不足道的情况下。我怎么猜他们现在正在度假呢。此外,我假设主要关注的是Play2.0。如果这个bug让你恼火,我建议你建立自己的版本。这真的很容易。是的,我目前有自己的版本作为测试,问题是我必须依赖于提供的播放安装这个应用程序。所以我明天可能会提出拉取请求。他们已经合并了我的拉取请求,所以在1.2.5中应该可以
log4j.rootLogger=ERROR, Rolling
log4j.logger.play=INFO
log4j.logger.play.libs.ws=FATAL
log4j.appender.Rolling=org.apache.log4j.RollingFileAppender
log4j.appender.Rolling.File=logs/play-as.log
log4j.appender.Rolling.MaxFileSize=100KB
log4j.appender.Rolling.MaxBackupIndex=100
log4j.appender.Rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.Rolling.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n
log4j.debug = TRUE