java - 记录 SOAP 消息时如何忽略 base64binary 字段?

标签 java xml logging spring-ws

我正在使用 Spring 的 SoapEnvelopeLoggingInterceptor 来记录 SOAP 请求/响应。

一些请求/响应包含 base64Binary 字段,它们在日志文件中占用了大量空间,我不需要出于我的目的记录它。

深入研究 SoapEnvelopeLoggingInterceptor 的代码,我可以看到使用的 java.xml.transform.Transformer 是这样创建的:

Transformer transformer = createTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "no");
return transformer; 

我可以在 Transformer 上设置一些属性来防止它打印出 base64Binary 字段的内容吗?或者我可以配置或覆盖以防止它被记录的任何其他内容?

最佳答案

我不知道 Transformer,但我认为 Base64 字段的大小写字母数量大致相等。普通文本往往要么有更多的小写字母,要么全部为大写字母。您也许可以通过这种方式确定差异。

还有一些标点符号从不出现在 Base64 中。看到其中任何一个都会告诉您该字段不是 Base64。

关于java - 记录 SOAP 消息时如何忽略 base64binary 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483344/

相关文章:

java - 将运行时异常重新抛出为已检查异常

c# - 从 XML 文件中删除所有艺术家节点

PostgreSQL WAL 进山

java - 如何以数组形式检索 JTable 数据

java - 将 OpenJDK 9 EA 与 IntelliJ 结合使用

java - 如何引用资源包?

java - 如何使用 JAXB 创建复杂的 xml 标签

python - 在Linux桌面上显示实时记分卡

linux - 如何在非常大的日志中快速查找事件

python - 将键=值对转换回 Python 字典