【问题标题】:Why can't untrusted code change the log level under Java Logging?为什么不受信任的代码不能在 Java Logging 下更改日志级别?
【发布时间】:2011-01-28 08:20:29
【问题描述】:

我有一个 Java 应用程序,它也作为小程序运行。该应用程序还碰巧使用了一个名为 BasicPlayer 的库来播放 .ogg 文件。 BasicPlayer 有一个内置记录器,它使用 Apache Logging Commons 使用内置 Java 记录器为 BasicPlayer.class 创建一个记录器。我知道关闭 BasicPlayer 日志记录的唯一方法是运行以下代码:

Logger.getLogger(BasicPlayer.class.getName()).setLevel(Level.OFF);

这在作为常规应用程序运行时可以正常工作。但是,当作为 applet 运行时,此代码将抛出 SecurityException,因为由于某些原因,applet 无法更改非匿名记录器的日志级别 (see here for a sorta-explanation)。

他们为什么要这样做?谁在乎小程序是否更改了日志级别?

【问题讨论】:

  • 您在寻找什么样的答案?无论如何,它就是这样。
  • 对我来说似乎很奇怪,我无法关闭我的小程序中包含的登录代码。基本上,我真的想不出任何理由说明为什么小程序能够关闭日志记录会很糟糕。

标签: java logging permissions applet


【解决方案1】:

他们为什么要这样做?谁在乎小程序是否更改了日志级别?

首先,在主机 JVM 中运行的其他东西可能正在使用 Apache 日志记录来跟踪小程序正在执行的操作。如果小程序可以更改日志记录级别,它可以关闭审核。

另外需要指出的是,BasicPlayer 是开源的,因此您还可以选择修改源代码以禁用日志记录和重建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2017-10-05
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多