一直以來都覺得system.out.print輸出的資訊不夠詳細,不能像log4j那樣輸出日期時間,輸出的類,輸出的型別等等;使用[log4j][1]雖然簡單,但是在很多時候我們只需要log4j的簡單的列印輸出功能,所以在這裡我模擬log4j,寫了乙個簡單的工具類
public
class
log
public
log(class<?> clazz)
public
log(class<?> clazz, boolean date_type)
public
log(class<?> clazz, boolean date_type, int lv)
public
void
out(string msg, exception e) else
e.printstacktrace();
}public /*synchronized*/ void
out(string str) else
outstr += "[" + clazz.get******name() + "]-";
switch (log_level)
outstr += "[" + thread.currentthread().getname() + "] " + str;
system.out.println(outstr);
}/**
* 模擬log4j物件對映輸出
* 通過匹配{},對映傳入的每個物件
* 知識點:object...obj 該用法是jdk1.7的新特性,可以傳入多個不同型別的物件
** log.out("a={},b={}{}","a","b",e,1,111)
* = ... a=,b= 1 111
* public /*synchronized*/ void
out(string str, object...obj) "))");
str = str.substring(0, begin_index + 1) + obj[i].tostring() + str.substring(begin_index + 1, str.length());
} else }}
out(str);
}
其中的dates是我自己寫的時間工具類,下面是使用方法,和log4j很相似
public
class test ,b={},c={}{}","a","b","c",1,2);
}
輸出結果是:當然也可以模擬log4j,通過properties配置檔案獲取date_type,log_level等屬性,也可以利用io輸出成log檔案[2015-08-21]-[test]-[info]-[main] 123
[2015-08-21]-[test]-[debug]-[main] a=,b=,c= 2
log4j 輸出資訊引數配置
如果使用pattern布局就要指定的列印資訊的具體格式conversionpattern,列印引數如下 m 輸出 中指定的訊息 p 輸出優先順序,即debug,info,warn,error,fatal r 輸出自應用啟動到輸出該log資訊耗費的毫秒數 c 輸出所屬的類目,通常就是所在類的全名 t ...
log4j輸出原則
要說log4j的輸出原則,就要先說下log4j的繼承關係 繼承關係 log4j提供了乙個root的logger,它是所有logger元件的 祖先 它永遠存在,且不能通過名字檢索或引用,通過logger.getrootlogger 方法取得它。可在配置檔案中方便地配置存在繼承關係的logger元件,凡...
Log4j輸出級別
對於日誌輸出級別來說,下面是我們應該記住的一些原則 error 系統發生了嚴重的錯誤,必須馬上進行處理,否則系統將無法繼續執行.比如,npe 空指標 資料庫不可用等異常.warn 系統能繼續執行,但是必須引起關注.對於存在的問題一般可以分為兩類 一種系統存在明顯的問題 比如,資料不可用 另一種就是系...