JDK Logging

 

Overview

* Default config file is located at: JDK_HOME/jre/lib/logging.properties

Sample Config File: mylogging.properties

* Output to both console and file named java.log in user home directory.
* Log only INFO level and above (i.e. INFO, WARNING and SERVERE)
* Append to existing log entries.

############################################################
#  	Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.  
# For example java -Djava.util.logging.config.file=myfile
############################################################
 
############################################################
#  	Global properties
############################################################
 
# "handlers" specifies a comma separated list of log Handler 
# classes.  These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
# To also add the FileHandler, use the following line instead.
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
 
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers.  For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= INFO
 
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
 
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
 
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
# Example to customize the SimpleFormatter output format 
# to print one-line log message like this:
#     <level>: <log message> [<date/time>]
#
# java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
 
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
 
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
com.xyz.foo.level = SEVERE

Point to Custom Logging Properties File

* Replace JDK_HOME/jre/lib/logging.properties file
* From command line:

java -Djava.util.logging.config.file=C:/users/john.doe/mylogging.properties

* From Java code:

String mylogfile = System.getProperty("user.home") + "/mylogging.properties";
LogManager.getLogManager().readConfiguration(
   new FileInputStream(mylogfile ));
System.setProperty("java.util.logging.config.file", mylogfile);

Use Logging in Java Code

static final Logger logger =
  Logger.getLogger(MyTestClass.class.getName());
...
 
@Test
public void testLogging() throws Exception {
	KrbUtils.setLoggingProperties();
	logger.severe("Test severe message.");
	logger.warning("Test warning message.");
	logger.info("Test info message.");
	logger.config("Test config message.");
	logger.fine("Test fine message.");
	logger.finer("Test finer message.");
	logger.finest("Test finest message.");
}

* Output:

Jan 15, 2013 1:24:03 PM com.ngc.security.utils.KrbUtilsTest testLogging
SEVERE: Test severe message.
Jan 15, 2013 1:24:03 PM com.ngc.security.utils.KrbUtilsTest testLogging
WARNING: Test warning message.
Jan 15, 2013 1:24:03 PM com.ngc.security.utils.KrbUtilsTest testLogging
INFO: Test info message.

References

* java.util.logging
* java.util.logging.LogManager
* java.util.logging.level
* http://docs.oracle.com/javase/1.4.2/docs/api/java/util/logging/FileHandler.html

This entry was posted in logging and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

This site uses Akismet to reduce spam. Learn how your comment data is processed.