从第三方jar中抑制java util日志记录

时间:2014-10-21 15:20:14

标签: java logging slf4j

我在eclipse控制台中收到了来自第三方jar的大量信息日志消息。破解打开jar我发现它使用java.util.logging。我想将jar的输出级别设置为WARNING。

我尝试使用-Djava.util.logging.config.file = pathToMy / JUL.properties的VM参数 文件内容为:

handlers=java.util.logging.ConsoleHandler
.level=WARNING
java.util.logging.ConsoleHandler.level=WARNING

不幸的是,这对输出没有影响。

如果它更容易,我的应用程序使用SLF4J。因此,如果使用不同的日志记录机制有一个简单的答案,我可以切换我的绑定来使用它。

3 个答案:

答案 0 :(得分:2)

您是否使用JConsole来确定:

  1. VM Summary选项卡显示系统属性' java.util.logging.config.file'已经确定。
  2. MBean标签 - > java.util.logging->操作 - > getLoggerLevel为空(无值)返回警告。
  3. MBean选项卡 - > java.util.logging->属性 - > LoggerNames包含可以添加到要禁用的事物列表中的活动第三方记录器列表。只有在执行代码创建记录器时才会列出记录器。未列出Anonymous loggers,但默认设置是从根记录器继承的。
  4. 您还可以添加以下代码来检查配置文件是否正常工作:

        public static void main(String[] arg) throws Exception {
            String p = System.getProperty("java.util.logging.config.file");
            System.out.println(p);
            System.out.println(new File(p).length());
            System.out.println(Logger.getLogger("").getLevel());
        }
    

答案 1 :(得分:1)

我认为您可能对以下代码段有用。它允许您在包级别设置日志行为:

Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);

答案 2 :(得分:0)

在对jar进行反编译以找到如何设置日志级别之前,您可以尝试在setLogLevel api中搜索要调试的组件。

enter image description here

  

setLogWriter(new PrintWriter(System.out));