org.apache.commons.logging.Log System Property

Q

How to use org.apache.commons.logging.Log system property to change the default logger?

✍: FYIcenter.com

A

If you want to change the default logger, you can specify the system property org.apache.commons.logging.Log=SomeLoggerClass using the "-D" option when launching the JVM.

The following example runs the HelloCommonsLogging code with SimpleLog logger:

C:\fyicenter>java -cp .;C:\local\commons-logging-1.2\commons-logging-1.2.jar
   "-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog"
   HelloCommonsLogging

Log class: org.apache.commons.logging.impl.SimpleLog
[FATAL] MyLogging - Hello - fatal
[ERROR] MyLogging - Hello - error
[WARN] MyLogging - Hello - warn
[INFO] MyLogging - Hello - info

The following example runs the HelloCommonsLogging code with Jdk14Logger logger:

C:\fyicenter>java -cp .;C:\local\commons-logging-1.2\commons-logging-1.2.jar
   "-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger"
   HelloCommonsLogging

Log class: org.apache.commons.logging.impl.Jdk14Logger
Nov 13, 2016 9:44:56 PM MyLogging main
SEVERE: Hello - fatal
Nov 13, 2016 9:44:56 PM MyLogging main
SEVERE: Hello - error
Nov 13, 2016 9:44:56 PM MyLogging main
WARNING: Hello - warn
Nov 13, 2016 9:44:56 PM MyLogging main
INFO: Hello - info

The following example runs the HelloCommonsLogging code with Log4JLogger logger:

C:\fyicenter>java -cp .;C:\local\commons-logging-1.2\commons-logging-1.2.jar
   "-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger"
   HelloCommonsLogging
   
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.apache.commons.logging.LogConfigurationException: 
User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' 
cannot be found or is not useable.
   at org.apache.commons.logging.impl.LogFactoryImpl
      .discoverLogImplementation(LogFactoryImpl.java:804)
   at org.apache.commons.logging.impl.LogFactoryImpl
      .newInstance(LogFactoryImpl.java:541)
   at org.apache.commons.logging.impl.LogFactoryImpl
      .getInstance(LogFactoryImpl.java:292)
   at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:669)
   at HelloCommonsLogging.<clinit>(HelloCommonsLogging.java:5)

This exception is expected, because the Log4j JAR file is not specified.

 

Using commons-logging.jar in Java Code

⇒⇒FAQ for Apache commons-logging.jar

2017-05-29, 429👍, 0💬