模擬Log4j輸出資訊

2021-07-04 18:04:20 字數 1528 閱讀 3754

一直以來都覺得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);

}

輸出結果是:

[2015-08-21]-[test]-[info]-[main] 123

[2015-08-21]-[test]-[debug]-[main] a=,b=,c= 2

當然也可以模擬log4j,通過properties配置檔案獲取date_type,log_level等屬性,也可以利用io輸出成log檔案

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 系統能繼續執行,但是必須引起關注.對於存在的問題一般可以分為兩類 一種系統存在明顯的問題 比如,資料不可用 另一種就是系...