Turn Off Apache Common Logging

Viewed 30803

I am using Apache Common Logging library in my standalone application. After searching through the web, I try to turn off the logging by using

package javaapplication1;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author yccheok
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

        log.info("You do not want to see me");
    }

    private static final Log log = LogFactory.getLog(Main.class);
}

However, I still can see the log message being printed. May I know what had I missed out?

I can turn off the logging by putting

# Sample ResourceBundle properties file
org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

in commons-logging.properties.

However, during my development time, my Netbeans doesn't know where to get commons-logging.properties, and sometimes I need to turn off logging during development time.

5 Answers

There are multiple ways:

  • Shutdown the common-logging completely (this will affect all your dependencies)

    System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
    
  • Pass common-logging logs through other log platforms (example slf4j) and control all logs easily from one place. (For example, the below hack will force all common-logging logs to be managed by Slf4j)

     <!-- for log4j give a try to log4j-jcl dependency -->
     <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <version>1.1.1</version>
       <scope>provided</scope>
     </dependency>
    
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
       <version>1.7.36</version>
     </dependency>
    
  • Dependency exclusion in inheriting projects

     <exclusions>
         <exclusion>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </exclusion>
     </exclusions>
    
Related