?? 90228de50f8d001c1487de563adc4702
字號:
package main.cn.edu.nju.software.sd.cll;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.*;
public class LogManager {
private static LogManager manager = new LogManager();
private LoggerFactory factory;
private Hashtable<String,Logger> table;
private LogManager()
{
table = new Hashtable<String,Logger>();
factory = new DefaultLoggerFactory();
}
public static LogManager getLogManager()
{
return manager;
}
/**獲得logger,如果不存在這個名字的logger,則調用工廠方法創建一個logger*/
public Logger getLogger(String name)
{
Logger logger = table.get(name);
if(logger==null)
{
logger = factory.createNewLogger(name);
Configuration.config(logger);
setParent(logger);
table.put(name, logger);
updateParent();
}
return logger;
}
/**搜索是否存在這個logger*/
public boolean findLogger(Logger logger)
{
boolean isexist = table.contains(logger);
return isexist;
}
/**獲得logger的父logger*/
private Logger getParent(Logger logger)
{
String loggerName = logger.getName();
String temp = loggerName;
String parentName = null;
Logger parent = null;
int dot = loggerName.lastIndexOf(".");
while(dot!=-1)
{
parentName = temp.substring(0,dot);
parent = table.get(parentName);
if(parent==null)
{
dot = parentName.lastIndexOf(".");
temp = parentName;
}
else
break;
}
if(parent!=null)
return parent;
else
return Logger.getRootLogger();
}
/**設置logger的parent*/
private void setParent(Logger logger)
{
Logger parent = getParent(logger);
logger.parent = parent;
}
/**如果logger不存在自己的level,則調用此方法獲得父logger的level*/
public Level getParentLevel(Logger logger)
{
Logger parent = logger.parent;
while(parent.getLevel()==null)
{
parent = parent.parent;
}
return parent.getLevel();
}
/**如果logger不存在自己的format,則調用此方法獲得父logger的format*/
public Format getParentFormat(Logger logger)
{
Logger parentlogger = logger.parent;
while(parentlogger.getFormat()==null)
{
parentlogger = parentlogger.parent;
}
return parentlogger.getFormat();
}
/**如果logger不存在自己的輸出地點,則調用此方法獲得父logger的輸出地點*/
public ArrayList<Handler> getParentHandler(Logger logger)
{
Logger parentlogger = logger.parent;
while(parentlogger.getHandlers().isEmpty())
{
parentlogger = parentlogger.parent;
}
return parentlogger.getHandlers();
}
/**每創建一個logger,則調用此方法更新所有logger的父logger*/
private void updateParent()
{
Logger temp =null;
Iterator it=table.keySet().iterator();
while(it.hasNext()){
temp = table.get(it.next());
setParent(temp);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -