?? 20db571c958b001c1bbfa32aa88923c4
字號(hào):
package main.cn.edu.nju.software.sd.cll;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.*;
public class Logger{
private String name;
private Level loggerlevel;
private Format logformat;
private ArrayList<Handler> handlers = new ArrayList<Handler>();
/**默認(rèn)的配置用于當(dāng)在配置文件中沒(méi)有父logger的配置的時(shí)候用來(lái)配置父logger,*/
public final static Level defaultLevel = Level.TRACE;
public final static Format defaultFormat = new Format("%n-%e-%m");
public final static Handler defaultHandler = new ConsoleHandler();
private boolean useParentConfiguration;
private boolean useParentLevel;
private boolean useParentDestination;
private boolean useParentFormat;
// private boolean isLoggable;
private static LoggerManager logManager = LoggerManager.getLogManager();
public static final Logger root = new Logger(" ");
/**構(gòu)造方法*/
public Logger(){}
public Logger(String n)
{
name = n;
}
public static Logger getRootLogger()
{
return root;
}
/**兩種獲得logger的方法*/
public static Logger getLogger(Class clazz) {
String namestr = clazz.getName();
Logger logger = logManager.getLogger(namestr);
return logger;
}
public static Logger getLogger(String namestr) {
Logger logger = logManager.getLogger(namestr);
return logger;
}
/**logger的配置*/
public void removeHandle(Handler handler)
{
}
/**獲得logger的名字*/
public String getName()
{
return name;
}
/**獲得和設(shè)置logger的level*/
public Level getLevel()
{
return loggerlevel;
}
public void setLevel(Level l)
{
loggerlevel = l;
}
/* public void setLevel(int n)
{
Level le = new Level();
le = le.toLevel(n);
setLevel(le);
}
public void setLevel(String str)
{
Level le = new Level();
le = le.toLevel(str);
setLevel(le);
}
public void setLevel(Level l,boolean b)
{
loggerlevel = l;
useParentLevel = b;
}*/
/**設(shè)置output destintion*/
public void addHandler(Handler h)
{
if(h!=null)
{
handlers.add(h);
}
}
/* public void addHandler(Handler h,boolean b)
{
useParentDestination = b;
if(!useParentDestination)
handlers.add(h);
}*/
public ArrayList<Handler> getHandlers()
{
return handlers;
}
/**設(shè)置format*/
public void setFormat(Format format)
{
logformat = format;
}
/* public void setFormat(Format f,boolean b)
{
useParentFormat = b;
logformat = f;
}*/
public Format getFormat()
{
return logformat;
}
/**判斷和設(shè)置是否應(yīng)用 父logger的配置 */
public boolean getUseParentConfiguration()
{
return useParentConfiguration;
}
public void setUseParentConfiguration(boolean use)
{
useParentConfiguration = use;
}
/**判斷是否用父logger的level*/
public boolean getUseParentLevel()
{
return useParentLevel;
}
public void setUseParentLevel(boolean useOrNot)
{
useParentLevel = useOrNot;
}
/**判斷是否使用父logger的output destination*/
public boolean getUseParentDestination()
{
return useParentDestination;
}
public void setUseParentDestination(boolean useOrNot)
{
useParentDestination = useOrNot;
}
/**判斷是否使用父logger的format*/
public boolean getUseParentFormat()
{
return useParentFormat;
}
public void setUseParentFormat(boolean useOrNot)
{
useParentFormat = useOrNot;
}
/**記錄并封裝信息,最后向目的地輸出信息*/
public void log(Level level, String message) {
Date d = new Date();
SimpleDateFormat sd = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss");
String date = sd.format(d);
String logname = name;
String result = null;
StackTraceElement stack[] = (new Throwable()).getStackTrace();
int i = stack.length-1;
String callClass = stack[i].getClassName();
String callee = stack[i].getMethodName();
int lineno = stack[i].getLineNumber();
LogRecord record = new LogRecord(logname,level,message,callClass,callee,lineno,date,0);
boolean loggable = loggableOrNot(level);
if(loggable)
{
Format formator = logformat;
if(formator==null)
{
formator = logManager.getParentFormat(this);
}
result = formator.doFormat(record);
}
ArrayList<Handler> array = handlers;
if(array.isEmpty())
{
array = logManager.getParentHandler(this);
}
for(int t=0;t<array.size();t++)
{
Handler handler = array.get(t);
handler.publish(result);
}
}
/**判斷是否可以log,如果當(dāng)前l(fā)ogger的level沒(méi)有配置,則比較父logger的level */
public boolean loggableOrNot(Level level)
{
boolean isLoggable;
Level l = loggerlevel;
if(l==null)
{
l = logManager.getParentLevel(this);
}
if(level.intlevel<l.intlevel)
isLoggable = false;
else
isLoggable = true;
return isLoggable;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -