hal/src/zutil/log/LogUtil.java

92 lines
2.3 KiB
Java
Raw Normal View History

package zutil.log;
2010-11-04 16:31:29 +00:00
import java.util.logging.ConsoleHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Utility functions for the standard Java Logger
*
* @author Ziver
*/
public class LogUtil {
2011-03-27 20:59:11 +00:00
private static final Logger logger = Logger.getLogger( LogUtil.class.getName() );
private LogUtil(){}
2010-11-04 16:31:29 +00:00
/**
* @return a new Logger for the calling class
*/
public static Logger getLogger(){
return Logger.getLogger(getCalingClass());
}
2010-11-04 16:31:29 +00:00
/**
* @return the parent class other than Logger in the stack
*/
public static String getCalingClass(){
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
for(int i=1; i<stackTraceElements.length ;++i){
String name = stackTraceElements[i].getClassName();
//name = name.substring( name.lastIndexOf('.')+1 );
2010-11-01 22:31:53 +00:00
if( !name.equals( LogUtil.class.getName() ) ){
//System.out.println("\""+name+"\"");
2011-03-27 20:59:11 +00:00
logger.fine("Caling class: \""+name+"\"");
return name;
2010-11-01 22:31:53 +00:00
}
}
return null;
}
2010-11-04 16:31:29 +00:00
/**
* Sets the global log formatter to the specified one
*
* @param f is the formatter class
*/
public static void setGlobalFormatter(Formatter f){
Logger root = Logger.getLogger("");
for (Handler handler : root.getHandlers()) {
handler.setFormatter(f);
2010-11-04 16:31:29 +00:00
}
}
2010-11-04 16:31:29 +00:00
/**
* Sets the global log level
*/
2010-10-27 13:49:46 +00:00
public static void setGlobalLevel(Level level){
setLevel("", level);
}
2010-11-04 16:31:29 +00:00
2010-10-27 13:49:46 +00:00
/**
* Sets the log level for a specified class
*/
public static void setLevel(Class<?> c, Level level){
setLevel(c.getName(), level);
}
2010-11-04 16:31:29 +00:00
/**
* Sets the log level for a specified logger
*/
public static void setLevel(String name, Level level){
2011-03-27 20:59:11 +00:00
logger.fine("Changing log level of \""+name+"\" to \""+level.getLocalizedName()+"\"");
2010-10-27 13:49:46 +00:00
Logger logger = Logger.getLogger(name);
logger.setLevel(level);
2010-11-04 16:31:29 +00:00
// Check if the logger has a handler
if( logger.getHandlers().length == 0 ){
// Create a new console handler
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel( level );
logger.addHandler( handler );
logger.setUseParentHandlers( false );
}
else{
// Set the level on the handlers
for (Handler handler : logger.getHandlers()) {
handler.setLevel(level);
}
}
}
}