user2992188
user2992188

Reputation: 293

Suppress java util logging from 3rd party jar

I am getting tons of info log messages from a 3rd party jar in my eclipse console. Cracking open the jar I see that it uses java.util.logging. I would like to set the output level for their jar to WARNING.

I have tried using the VM argument of -Djava.util.logging.config.file=pathToMy/JUL.properties where the contents of the file are:

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

Unfortunately, that made no difference in the output.

If it makes it any easier, my application uses SLF4J. So if there's a simple answer using a different logging mechanism I can just switch my binding to use it.

Upvotes: 0

Views: 5578

Answers (3)

suiwenfeng
suiwenfeng

Reputation: 2003

Before decompile the jar to find how to set Log level you can try to search the setLogLevel api for which component you want debug more.

enter image description here

setLogWriter(new PrintWriter(System.out));

Upvotes: 0

jmehrens
jmehrens

Reputation: 11065

Have you used JConsole to determine that:

  1. The VM Summary tab shows that the system property 'java.util.logging.config.file' is set.
  2. The MBean tab->java.util.logging->Operations->getLoggerLevel of blank (no value) returns WARNING.
  3. The MBean tab->java.util.logging->Attributes->LoggerNames contains the list of active 3rd party loggers which can be added to your list of things to disable. The loggers will only be listed if the executing code has created them. Anonymous loggers are not listed but, the default settings are inherited from the root logger.

You can also add the following code to check that your config file is working:

    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());
    }

Upvotes: 2

I think you may have the following snippet useful. It will allow you to set the log behaviour at package level:

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

Upvotes: 3

Related Questions