以编程方式关闭Jersey记录

Nie*_*ard 9 java rest logging jersey java.util.logging

在我的输出中,我有来自Jersey的JUL记录消息

03.12.2010 14:14:55 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
Run Code Online (Sandbox Code Playgroud)

以编程方式我想把它们关掉,所以我尝试了

Logger.getLogger("com.sun.jersey.api.core.PackagesResourceConfig").setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

要么

Logger.getLogger("com.sun.jersey").setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有趣的是这个全局配置有效:

Logger.getLogger( "com" ).setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

要么

Logger.getLogger( "" ).setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

为什么?

Her*_*eri 2

返回的记录器Logger.getLogger()WeakReferences。因此,在您设置适当的级别后,它们可能会被垃圾收集,因为您不保留对其的任何引用,从而删除您的设置。

将记录器存储在具有适当范围的变量中以保留您的设置。

  • 啊哈。它与静态初始化程序一起使用,而不是对象初始化程序块。所以: private Final static Logger COM_SUN_JERSEY_LOGGER = Logger.getLogger( "com.sun.jersey" ); 静态 { COM_SUN_JERSEY_LOGGER.setLevel( Level.SEVERE ); } 可以。 (3认同)