Java 如何在通过http发送时从log4j日志中隐藏用户名和密码

Java 如何在通过http发送时从log4j日志中隐藏用户名和密码,java,logging,log4j,Java,Logging,Log4j,当我记录包含用户名和密码的Http POST消息时,我想从我的log4j日志中隐藏用户名和密码。我已经删除了本例中的真实用户名和密码: 2015-10-07 11:19:41 DEBUG wire:72 - http-outgoing-3 >> "POST /login?IDToken1=<Username in plain text is seen here>&IDToken2=<Password in plain text is seen here&g

当我记录包含用户名和密码的Http POST消息时,我想从我的log4j日志中隐藏用户名和密码。我已经删除了本例中的真实用户名和密码:

2015-10-07 11:19:41  DEBUG wire:72 - http-outgoing-3 >> "POST /login?IDToken1=<Username in plain text is seen here>&IDToken2=<Password in plain text is seen here> HTTP/1.1[\r][\n]"
但它们都不起作用。我尝试过这个方法,但效果很好:

log4j.logger.org.apache.http=INFO
唯一的问题是,调试级别上的所有
http
日志记录也被隐藏。如果可能的话,我真的只想隐藏用户名和密码。 或者调整粒度,以便在上面的示例中隐藏消息


这可能吗?

这是log4j配置。我正在使用:

# (org.apache.commons.httpclient.Wire)
log4j.logger.httpclient.wire.header = INFO
log4j.logger.httpclient.wire.content = INFO
log4j.logger.org.apache.commons.httpclient = INFO

使用不包含信息的自定义模式布局的文件追加器如何?或者可以扩展appender以过滤掉特定信息。或事件一个丢弃特定消息的自定义筛选器(/login*)?嗨,EJP。默认情况下,它是在Apache http类的调试级别上记录的,我正在使用log4j记录许多其他事情,所以我不能不记录它。我试着在信息级别上详细记录标题、客户端和连接,但没有成功。斯蒂格·托尔,我会看看你的建议。感谢您的回复/Jan如果用户想查看调试日志怎么办?他们应该永远不做调试吗?
# (org.apache.commons.httpclient.Wire)
log4j.logger.httpclient.wire.header = INFO
log4j.logger.httpclient.wire.content = INFO
log4j.logger.org.apache.commons.httpclient = INFO