完全禁用 java net ssl 调试日志记录

我找到了大量关于如何为 SSL、TLS 和类似功能启用 javax.net.debug 的文档,但即使在参考文档中,我也没有找到如何完全禁用它以编程方式覆盖以前的设置。

我的确切问题是在 Tomcat 实例中,另一个应用程序执行以下指令:

System.setProperty("javax.net.debug","all");

这会导致catalina.out文件迅速增加他的维度并且不需要。

我已经尝试使用相同的指令从我的 Java 代码中覆盖它,使用“ none ”、“ off ”和“ false ”值,但没有结果,仍然记录了大量 TLS 内容。

例如,在我的应用程序中,我添加了以下指令:

System.setProperty("javax.net.debug","none");

但我仍然得到完整的日志。


慕沐林林
浏览 246回答 3
3回答

梦里花落0921

问题是 tomcat 应用程序正在覆盖您从命令行提供的任何值,如果无法控制此代码正在做什么,您就无法真正从命令行参数覆盖它。虽然安全管理器能够阻止设置属性,但它只能通过抛出异常来实现,这可能会导致比它解决的问题更多的问题。在这种情况下,您唯一的选择是在其他代码设置后,自己从代码中设置该值。对于javax.net.debug,该选项需要在Debug 类的静态静态初始化程序运行之前设置为其最终值sun.*,也就是在第一条消息出现之前。这可以被任何不用作某些选项的值禁用(空字符串,或者不应该禁用它)。如果稍后设置,它将没有任何效果,事后也无法将其关闭(除了做一些糟糕的反射黑客以访问该类的内部,这只能在 java 8 及更早版本中实现)

郎朗坤

您可以通过从 IDE 的运行配置中删除以下内容来禁用它:-Djavax.net.debug=all

隔江千里

如果有一些启用 SSL 日志记录的 VM 参数尝试删除它们,此外您可以检查 eclipse.ini 文件以查看这些参数是否在那里声明。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java