/home/wpollock1/public_html/AJava/LoggingDemo.java
// Demo of Java SE logging API
// Written 10/2007 by Wayne Pollock, Tampa Florida USA.
// Last modified 4/2013: Added the ability to change the log level
// from the command line, with: java -Dlog.level=<new level> LoggingDemo
// (Try it with "ALL" or "OFF".)
import java.util.logging.*;
import static java.util.logging.Level.*;
public class LoggingDemo
{
// Create a logger named for this class:
private static final String className = LoggingDemo.class.getName();
private static final Logger logger = Logger.getLogger( className );
private static final Logger rootLogger = Logger.getLogger( "" );
public static void main ( String [] args )
{
System.out.println( "My Logger name: " + logger.getName()
+ ", Default Level: " + logger.getLevel() );
System.out.println( "Root logger's default level: "
+ rootLogger.getLevel() + "\n" );
// If log.level was set on command line, change to that level:
String logLevel = System.getProperty( "log.level" );
if ( logLevel != null ) {
logger.info( "Changing default log level to: " + logLevel );
try {
Level level = Level.parse( logLevel );
logger.setLevel( level );
rootLogger.setLevel( level );
// Must set new level on handlers too (we only have the one,
// attached to the root logger):
Handler [] handlers = rootLogger.getHandlers();
for ( Handler handler : handlers )
handler.setLevel( level );
} catch ( Exception e ) {
logger.warning( "Failed to change level to \"" +
logLevel + "\"." );
}
}
System.out.println();
logger.info( "Starting Application\n" );
doSomethingInteresting();
logger.info( "Ending Application\n" );
}
static void doSomethingInteresting ()
{
// Tell logger the the level, class, method, and message:
logger.logp( INFO, className, "doSomethingInteresting",
"Attempting to take over the world\n" );
if ( ! takeOverTheWorld() ) {
logger.logp( SEVERE, className, "doSomethingInteresting",
"Failed to take over the world!\n" );
}
}
static boolean takeOverTheWorld () {
logger.entering( className, "takeOverTheWorld" );
// ...
logger.exiting( className, "takeOverTheWorld" );
return false; // Too bad, it didn't work.
}
}