为什么不受信任的代码不能在Java Logging下更改日志级别?

时间:2010-03-16 22:07:06

标签: java logging permissions applet

我有一个Java app也可以作为applet运行。该应用程序也恰好使用名为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)。

他们为什么要这样做?谁关心applet是否更改了日志级别?

1 个答案:

答案 0 :(得分:1)

  

他们为什么要这样做?谁关心applet是否更改了日志级别?

嗯,首先,在主机JVM中运行的其他内容可能正在使用Apache日志记录来保持applet正在执行的操作的审计跟踪。如果applet可以更改日志记录级别,则可以关闭审计。

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