JDK自帶的log工具

Java.util.logging:JDK標(biāo)準(zhǔn)庫(kù)中的類(lèi)拒课,是JDK 1.4 版本之后添加的日志記錄的功能包渡紫。
Java Logging API提供了七個(gè)日志級(jí)別用來(lái)控制輸出岛琼。

級(jí)別 調(diào)用方法 含義
SEVERE severe() 嚴(yán)重
WARNING warning() 警告
INFO info() 信息
CONFIG config() 配置
FINE fine() 良好
FINER finer() 較好
FINEST finest() 最好
相關(guān)術(shù)語(yǔ)
1. logger
  • 代碼需要輸入日志的地方都會(huì)用到Logger视卢,這幾乎是一個(gè)JDK logging模塊的代言人雏逾,我們常常用Logger.getLogger("com.aaa.bbb");獲得一個(gè)logger嘉裤,然后使用logger做日志的輸出。
  • logger其實(shí)只是一個(gè)邏輯管理單元栖博,其多數(shù)操作都只是作為一個(gè)中繼者傳遞別的角色屑宠,比如說(shuō):Logger.getLogger(“xxx”)的調(diào)用將會(huì)依賴于LogManager類(lèi),使用logger輸入日志信息的時(shí)候會(huì)調(diào)用logger中的所有handler進(jìn)行日志的輸入仇让。
  • logger是有層次關(guān)系的典奉,每個(gè)logger通常以java包名為其名稱。子logger通常會(huì)從父logger繼承l(wèi)ogger級(jí)別丧叽、handler卫玖、Resource等。
    整個(gè)JVM會(huì)存在一個(gè)名稱為空的root logger踊淳,所有匿名的logger都會(huì)把root logger作為其父假瞬。
LogManager
  • 整個(gè)JVM內(nèi)部所有l(wèi)ogger的管理,logger的生成、獲取等操作都依賴于它笨触,也包括配置文件的讀取懦傍。LogManager中會(huì)有一個(gè)Hashtable[private Hashtable<String,WeakReference<Logger>> loggers]用于存儲(chǔ)目前所有的logger,如果需要獲取logger的時(shí)候芦劣,Hashtable已經(jīng)有存在logger的話就直接返回Hashtable中的粗俱,如果hashtable中沒(méi)有l(wèi)ogger,則新建一個(gè)同時(shí)放入Hashtable進(jìn)行保存虚吟。
2. Handler
  • 用來(lái)控制日志輸出的寸认,比如JDK自帶的ConsoleHanlder把輸出流重定向到System.err輸出,每次調(diào)用Logger的方法進(jìn)行輸出時(shí)都會(huì)調(diào)用Handler的publish方法串慰,每個(gè)logger有多個(gè)handler偏塞。我們可以利用handler來(lái)把日志輸入到不同的地方(比如文件系統(tǒng)或者是遠(yuǎn)程Socket連接).
3. Formatter
  • 日志在真正輸出前需要進(jìn)行一定的格式化:比如是否輸出時(shí)間?時(shí)間的格式邦鲫?是否輸入線程名灸叼?是否使用國(guó)際化信息等。
4. Log Level
  • JDK Logging把日志分為如下幾個(gè)級(jí)別庆捺,等級(jí)依次升高古今。all→finest→finer→fine→config→info→warning→server→off,如果將級(jí)別設(shè)為info滔以,那么info之前的低級(jí)別信息將不會(huì)輸出捉腥,只有info級(jí)別只有的信息會(huì)輸出,通過(guò)控制級(jí)別達(dá)到控制輸出的目的你画。需要注意抵碟,不僅是logger具有級(jí)別,handler也是有級(jí)別坏匪,也就是說(shuō)如果某個(gè)logger級(jí)別是FINE拟逮,客戶希望輸入FINE級(jí)別的日志,如果此時(shí)logger對(duì)應(yīng)的handler級(jí)別為INFO剥槐,那么FINE級(jí)別日志仍然是不能輸出的唱歧。
對(duì)應(yīng)關(guān)系
  1. LogManager與logger是1對(duì)多關(guān)系宪摧,整個(gè)JVM運(yùn)行時(shí)只有一個(gè)LogManager粒竖,且所有的logger均在LogManager中。
  2. logger與handler是多對(duì)多關(guān)系几于,logger在進(jìn)行日志輸出的時(shí)候會(huì)調(diào)用所有的hanlder進(jìn)行日志的處理蕊苗。
  3. handler與formatter是一對(duì)一關(guān)系,一個(gè)handler有一個(gè)formatter進(jìn)行日志的格式化處理沿彭。
  4. 很明顯:logger與level是一對(duì)一關(guān)系朽砰,hanlder與level也是一對(duì)一關(guān)系 。
簡(jiǎn)單使用
public class LogJDKTest{
    public static Logger log = Logger.getLogger(LogJDKTest.class.getName());

    public static void main(String[] args){
        // all→finest→finer→fine→config→info→warning→server→off
        // 級(jí)別依次升高,后面的日志級(jí)別會(huì)屏蔽之前的級(jí)別
        log.setLevel(Level.INFO);
        log.finest("finest");
        log.finer("finer");
        log.fine("fine");
        log.config("config");
        log.info("info");
        log.warning("warning");
        log.severe("server");
    }
}
public class LogJDKTest{
    public static Logger log = Logger.getLogger(LogJDKTest.class.toString());
 
    static{
        // new一個(gè)控制臺(tái)處理器
        Handler console = new ConsoleHandler();
        // 給處理器設(shè)置級(jí)別
        console.setLevel(Level.SEVERE);
        // 給logger設(shè)置處理器
        log.addHandler(console);
    }
 
    public static void main(String[] args){
        log.setLevel(Level.INFO);
        log.finest("finest");
        log.finer("finer");
        log.fine("fine");
        log.config("config");
        log.info("info");
        log.warning("warning");
        log.severe("server");
    }
 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞧柔,一起剝皮案震驚了整個(gè)濱河市漆弄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘶炭,老刑警劉巖谓娃,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盐数,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倒谷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)糙箍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渤愁,“玉大人,你說(shuō)我怎么就攤上這事深夯《陡瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵咕晋,是天一觀的道長(zhǎng)他挎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捡需,這世上最難降的妖魔是什么办桨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮站辉,結(jié)果婚禮上呢撞,老公的妹妹穿的比我還像新娘。我一直安慰自己饰剥,他們只是感情好殊霞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著汰蓉,像睡著了一般绷蹲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顾孽,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天祝钢,我揣著相機(jī)與錄音,去河邊找鬼若厚。 笑死拦英,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的测秸。 我是一名探鬼主播疤估,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼灾常,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了铃拇?” 一聲冷哼從身側(cè)響起钞瀑,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慷荔,沒(méi)想到半個(gè)月后仔戈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拧廊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年监徘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吧碾。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰盔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倦春,到底是詐尸還是另有隱情户敬,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布睁本,位于F島的核電站尿庐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呢堰。R本人自食惡果不足惜抄瑟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枉疼。 院中可真熱鬧皮假,春花似錦、人聲如沸骂维。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)航闺。三九已至褪测,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潦刃,已是汗流浹背侮措。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留福铅,地道東北人萝毛。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像滑黔,于是被迫代替她去往敵國(guó)和親笆包。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 作為一個(gè)有追求的程序猿略荡,你了解你見(jiàn)到的各種日志嗎庵佣?JDK的日志、Tomcat的日志汛兜、還有Logback的日志巴粪,他們...
    帥可兒妞閱讀 2,925評(píng)論 0 1
  • idea 添加注釋/** 然后回車(chē) 選中代碼塊 Ctrl+Shift+/ 重點(diǎn)推薦閱讀:https://www....
    Helen_Cat閱讀 19,819評(píng)論 0 37
  • logging介紹Python的logging模塊提供了通用的日志系統(tǒng),可以方便第三方模塊或者是應(yīng)用使用粥谬。這個(gè)模塊...
    modingfa閱讀 6,817評(píng)論 0 2
  • 一肛根、給路由添加正則表達(dá)式 給路由參數(shù)添加正則表達(dá)式的原因:在實(shí)際開(kāi)發(fā)時(shí),url中往往會(huì)帶有很多的參數(shù)漏策,例如:/ad...
    IIronMan閱讀 1,621評(píng)論 1 12
  • 在現(xiàn)實(shí)生活中派哲,記錄日志非常重要。銀行轉(zhuǎn)賬時(shí)會(huì)有轉(zhuǎn)賬記錄掺喻;飛機(jī)飛行過(guò)程中芭届,會(huì)有黑盒子(飛行數(shù)據(jù)記錄器)記錄飛行過(guò)程中...
    chliar閱讀 759評(píng)論 1 0