記得剛開始學習Java的時候,爲了跟蹤程序的進程及異常信息,到處添加System.out.println()語句,到後來雖然也學會了配置並使用Log4j,但一直都只是用用而已,沒有去深入地瞭解,近期在做一個小項目的時候又用到了Log4j,在捕捉一些異常的時候希望直接記錄在日誌文件裏,於是在網上找了些資料完成了這個小小的工具類。
import org.apache.log4j.Logger;
public class LogTool {
public static void info(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.info(getException((Exception)e));
}else {
logger.info(e.toString());
}
}
public static void warn(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.warn(getException((Exception)e));
}else {
logger.warn(e.toString());
}
}
public static void debug(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.debug(getException((Exception)e));
}else {
logger.debug(e.toString());
}
}
public static void error(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.error(getException((Exception)e));
}else {
logger.error(e.toString());
}
}
public static void fatal(Class logClass,Object e){
Logger logger=Logger.getLogger(logClass);
if(e instanceof Exception){
logger.fatal(getException((Exception)e));
}else {
logger.fatal(e.toString());
}
}
public static String getException(Exception e){
StackTraceElement[] ste = e.getStackTrace();
StringBuffer sb = new StringBuffer();
sb.append(e.getMessage() + " ");
for (int i = 0; i < ste.length; i++) {
sb.append(ste[i].toString() + " ");
}
return sb.toString();
}
}
測試類:
import com.hing.tools.LogTool;
public class TestLogTool {
public static void main(String[] args){
LogTool.info(TestLogTool.class, "this is info");
try{
throw new Exception("my exception");
}catch(Exception e){
LogTool.error(TestLogTool.class, e);
}
}
}
測試結果:
2007-02-13 15:22:26 [com.sms.test.TestLogTool]-[ERROR] my exception
com.sms.test.TestLogTool.main(TestLogTool.java:8)