2011-07-13 17:53:17 +00:00
|
|
|
/*******************************************************************************
|
|
|
|
|
* Copyright (c) 2011 Ziver Koc
|
|
|
|
|
*
|
|
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
|
|
|
* in the Software without restriction, including without limitation the rights
|
|
|
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
|
|
|
* furnished to do so, subject to the following conditions:
|
|
|
|
|
*
|
|
|
|
|
* The above copyright notice and this permission notice shall be included in
|
|
|
|
|
* all copies or substantial portions of the Software.
|
|
|
|
|
*
|
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
|
* THE SOFTWARE.
|
|
|
|
|
******************************************************************************/
|
2010-05-18 20:38:02 +00:00
|
|
|
package zutil.log;
|
|
|
|
|
|
2010-11-04 16:31:29 +00:00
|
|
|
import java.util.logging.ConsoleHandler;
|
2010-05-18 20:38:02 +00:00
|
|
|
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() );
|
|
|
|
|
|
2010-05-18 20:38:02 +00:00
|
|
|
private LogUtil(){}
|
2010-11-04 16:31:29 +00:00
|
|
|
|
2010-05-18 20:38:02 +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
|
|
|
|
2010-05-18 20:38:02 +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();
|
2010-11-01 22:31:53 +00:00
|
|
|
if( !name.equals( LogUtil.class.getName() ) ){
|
2013-02-06 17:44:56 +00:00
|
|
|
logger.fine("Calling class: \""+name+"\"");
|
2010-05-18 20:38:02 +00:00
|
|
|
return name;
|
2010-11-01 22:31:53 +00:00
|
|
|
}
|
2010-05-18 20:38:02 +00:00
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2010-11-04 16:31:29 +00:00
|
|
|
|
2010-05-18 20:38:02 +00:00
|
|
|
/**
|
2013-05-07 16:19:47 +00:00
|
|
|
* Sets the log formatter to all root Handlers
|
2010-05-18 20:38:02 +00:00
|
|
|
*
|
2011-06-24 23:20:59 +00:00
|
|
|
* @param f is the formatter class
|
2010-05-18 20:38:02 +00:00
|
|
|
*/
|
|
|
|
|
public static void setGlobalFormatter(Formatter f){
|
|
|
|
|
Logger root = Logger.getLogger("");
|
|
|
|
|
for (Handler handler : root.getHandlers()) {
|
2011-06-24 23:20:59 +00:00
|
|
|
handler.setFormatter(f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2013-05-07 16:19:47 +00:00
|
|
|
* Adds the log formatter to all handlers in the namespace
|
2011-06-24 23:20:59 +00:00
|
|
|
*
|
|
|
|
|
* @param f is the formatter class
|
|
|
|
|
*/
|
|
|
|
|
public static void setFormatter(String name, Formatter f){
|
|
|
|
|
Logger root = Logger.getLogger(name);
|
|
|
|
|
for (Handler handler : root.getHandlers()) {
|
2010-05-18 20:38:02 +00:00
|
|
|
handler.setFormatter(f);
|
2010-11-04 16:31:29 +00:00
|
|
|
}
|
2010-05-18 20:38:02 +00:00
|
|
|
}
|
2010-11-04 16:31:29 +00:00
|
|
|
|
2010-05-18 20:38:02 +00:00
|
|
|
/**
|
|
|
|
|
* Sets the global log level
|
|
|
|
|
*/
|
2010-10-27 13:49:46 +00:00
|
|
|
public static void setGlobalLevel(Level level){
|
2010-05-18 20:38:02 +00:00
|
|
|
setLevel("", level);
|
|
|
|
|
}
|
2010-11-04 16:31:29 +00:00
|
|
|
|
2013-05-07 16:19:47 +00:00
|
|
|
/**
|
|
|
|
|
* Addsd a Handler to the root namespace
|
|
|
|
|
*/
|
|
|
|
|
public static void addGlobalHandler(Handler handler){
|
|
|
|
|
Logger root = Logger.getLogger("");
|
|
|
|
|
root.addHandler(handler);
|
|
|
|
|
}
|
|
|
|
|
|
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
|
|
|
|
2010-05-18 20:38:02 +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);
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-05-18 20:38:02 +00:00
|
|
|
}
|
|
|
|
|
}
|