用Log4j記錄你的異常信息

      記得剛開始學習Java的時候,爲了跟蹤程序的進程及異常信息,到處添加System.out.println()語句,到後來雖然也學會了配置並使用Log4j,但一直都只是用用而已,沒有去深入地瞭解,近期在做一個小項目的時候又用到了Log4j,在捕捉一些異常的時候希望直接記錄在日誌文件裏,於是在網上找了些資料完成了這個小小的工具類。

 

package com.hing.tools;

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();
    }

}

測試類:

 

package com.sms.test;
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]-[INFO] this is info
2007-02-13 15:22:26 [com.sms.test.TestLogTool]-[ERROR] my exception
com.sms.test.TestLogTool.main(TestLogTool.java:
8)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章