【问题标题】:Totally disabling java net ssl debug logging完全禁用 java net ssl 调试日志记录
【发布时间】:2023-03-20 21:16:01
【问题描述】:

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

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

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

这会导致 catalina.out 文件的维度迅速上升且不受欢迎。

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

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

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

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

【问题讨论】:

    标签: java debugging ssl logging


    【解决方案1】:

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

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

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

    【讨论】:

    • 对不起,我不够清楚(现在我已经编辑了我的消息)。这正是我所做的,从我的 java 代码中设置,我使用了上面消息中列出的值,但没有任何效果。问题是我在参考文档中没有找到正确的设置来禁用日志一旦被激活。
    • 我看了一些相关的代码,我会更新我的答案
    • 好的,谢谢,现在很清楚我的发布指令不影响日志记录级别的原因。我唯一的可能是从第三方应用程序中删除该声明。
    【解决方案2】:

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

    【讨论】:

    • 我会改写:“如果你使用的是 eclipse”......我认为 OP 是在询问真正的生产服务器,而这些很少从 eclipse 会话开始。好吧,至少他们不应该这样。
    • 已经检查过任何Tomcat启动文件,是在Linux下安装的。调试由第三方提供的应用程序激活。感谢您的回答。我还补充说,在 Eclipse 下我没有问题,因为这两个应用程序是分开的。
    【解决方案3】:

    您可以通过从 IDE 的运行配置中删除以下内容来禁用它:

    -Djavax.net.debug=all

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 2015-02-23
      • 2019-12-23
      • 1970-01-01
      • 2021-06-09
      • 2021-12-19
      • 2018-01-29
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多