- bounty将在6天后过期**。回答此问题可获得+50声望奖励。The Student希望引起更多人关注此问题。
我需要在我的www.example.com中添加以下行:logging.properties the line:
sun.net.www.protocol.http.HttpURLConnection.level = ALL
但是这个文件是使用xml格式的log4j.xml生成的,我不知道如何正确地将这个属性格式化为xml来生成这一行。
使用log4j-1.2.8、JRE和JDK 1.8_181、Wildfly 10.1.0。最终版
2条答案
按热度按时间kxe2p93d1#
乍一看,无论使用
properties
还是xml
配置文件,您都无法使用Log4j配置sun.net.www.protocol.http.HttpURLConnection
的日志级别。正如您在source code of the
HttpURLConnection
class中所看到的,它的日志记录基于PlatformLogger
,而PlatformLogger
又使用java.util.logging
。PlatformLogger
javadoc描述了应该如何配置它:平台日志记录器为JRE组件提供了一个API来记录消息。这使运行时组件能够消除对日志记录工具的静态依赖性,并推迟java.util.logging初始化,直到启用它。此外,如果日志记录模块不存在,则可以使用PlatformLogger API。
如果未启用日志记录功能,平台日志记录器将根据默认日志记录配置(见下文)输出日志消息。在此实现中,它不记录发出日志消息的堆栈帧信息。
当日志记录工具被启用时(在启动或运行时),将为每个平台日志记录器创建java.util.logging.Logger,并且所有日志消息将被转发到Logger进行处理。
当满足以下条件之一时,日志记录设施被“启用”:
1.设置系统属性“java. util. logging. config. class”或“java.util.logging.config.file”
1.引用了将触发日志记录初始化的java.util.logging.LogManager或java.util.logging.Logger。
默认日志记录配置:全局日志记录级别=信息处理程序= java.util.logging.控制台处理程序java.util.logging.控制台处理程序.级别=信息java.util.logging.控制台处理程序.格式化程序= java.util.logging.简单格式化程序
基本上,您需要配置系统属性
java.util.logging.config.file
,该属性指向具有所需属性的适当properties
文件:请考虑查看此related SO question,它提供了不同的示例和有关如何操作的进一步信息。
正如该问题中所建议的,您也可以使用系统属性
javax.net.debug
:如果要集成Log4j和
java.util.logging
,可以尝试使用SLF4J和相应的bridges等库。This related SO question提供了更多信息。gzszwxb42#
备注:由于Log4j 1.2.8是almost 20 years old,8年前已宣布停产,并且带有several outstanding vulnerabilities,因此我认为您不想使用它。
正如您在jccampanero's answer中所看到的,
HttpURLConnection
类使用PlatformLogger
进行日志记录,在Java 7或8中,PlatformLogger
将所有日志记录委托给java.util.logging.LogManager
。java.util.logging.LogManager
有几种替代实现,但WildFly使用它自己的实现JBoss LogManager,这是最容易使用的。要修改日志配置,您只需编辑服务器的配置并添加:(cf. documentation)。