2010-03-16 64 views
0

我有一个也作为applet运行的Java应用程序。该应用程序也恰好使用名为BasicPlayer的库来播放.ogg文件。 BasicPlayer有一个内置的记录器,它使用Apache Logging Commons使用内置的Java记录器为BasicPlayer.class创建一个记录器。我知道即将关闭BasicPlayer记录的唯一方法是运行这段代码:为什么不能不可信的代码在Java日志记录中更改日志级别?

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

作为常规应用程序运行时,也能正常工作。但是,作为小程序运行时,此代码将引发SecurityException,因为由于某种原因,小程序无法更改非匿名日志记录的日志级别(see here for a sorta-explanation)。

他们为什么要这样做?谁在乎applet是否改变日志级别?

+0

你在找什么样的答案?无论如何,它都是这样。 – skaffman 2010-03-16 22:15:04

+1

我讨厌那种说法。 – 2010-03-16 22:20:24

+0

对于我来说,我似乎很奇怪,我无法关闭使用我的小程序包含的代码中的日志记录。基本上,我无法真正想到为什么applet能够关闭日志会有什么不好。 – cdmckay 2010-03-17 01:58:18

回答

0

他们为什么要这么做?谁在乎applet是否改变日志级别?

嘛,一开始,其他的东西在主机上运行的JVM可使用Apache日志记录,以保持什么样的小程序正在做审计线索。如果小程序可以更改日志记录级别,则可以关闭审计。

另外要指出的是,BasicPlayer是开源的,所以你也有它修改源禁用日志记录和重建的选项。