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

完全禁用java net ssl调试日志记录,java,debugging,ssl,logging,Java,Debugging,Ssl,Logging,我已经找到了大量关于如何为SSL、TLS和类似服务启用javax.net.debug的文档,但即使在参考文档中,我也没有找到如何以编程方式完全禁用它来覆盖以前的设置 我的确切问题是,在Tomcat实例中,另一个应用程序执行以下指令: System.setProperty("javax.net.debug","all"); System.setProperty("javax.net.debug","none"); 这会导致catalina.out文件迅速增加维度,这是不必要的 我已经尝试用相同

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

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

System.setProperty("javax.net.debug","all");
System.setProperty("javax.net.debug","none");
这会导致catalina.out文件迅速增加维度,这是不必要的

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

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

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

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

如果有一些启用SSL日志记录的VM参数,请尝试删除它们,此外,您可以检查eclipse.ini文件,查看这些参数是否在那里声明。

问题是tomcat应用程序正在覆盖您从命令行中给出的任何值,如果无法控制这段代码的执行,就无法从命令行参数覆盖它。虽然安全管理器能够阻止设置属性,但它只能通过抛出异常来做到这一点,这可能会导致比它解决的问题更多的问题

在这种情况下,您唯一的选择是在其他代码设置值之后,自己从代码中设置值


对于
javax.net.debug
,在运行
sun.*
debug类的静态初始值设定项之前,该选项需要设置为它的最终值,这是在第一条消息出现之前。这可以被任何未用作某个选项的值禁用(空字符串,或者无值应禁用它)。如果以后再设置,它将没有任何效果,也无法在事后关闭它(除了做一些糟糕的反射黑客来访问该类的内部,这只有在java 8和更早版本中才可能)

我会改写:“以防您使用eclipse”。。。我认为OP询问的是一个真正的生产服务器,而这些服务器很少从eclipse会话开始。好吧,至少他们不应该这样。已经检查过任何Tomcat启动文件,是一个在Linux上的安装。调试由第三方提供的应用程序激活。谢谢你的回答。我还补充说,在Eclipse下,我没有问题,因为这两个应用程序是分开的。很抱歉,我不够清楚(现在我已经编辑了我的消息)。这正是我所做的,从我的java代码中设置,我使用了上面消息中列出的值,但没有任何效果。问题是,我在参考文档中找不到激活日志后禁用日志的正确设置。我查看了一些相关代码,我将更新我的回答OK谢谢,现在清楚了我的post指令不影响日志级别的原因。我唯一的可能性是从第三方应用程序中删除该声明。