国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java.util.logging.Logger使用詳解

2019-11-14 22:18:23
字體:
供稿:網(wǎng)友
java.util.logging.Logger使用詳解java.util.logging.Logger不是什么新鮮東西了,1.4就有了,可是因?yàn)閘og4j的存在,這個(gè)logger一直沉默著,其實(shí)在一些測(cè)試性的代碼中,jdk自帶的logger比log4j更方便。一、創(chuàng)建Logger對(duì)象static Logger getLogger(String name) 為指定子系統(tǒng)查找或創(chuàng)建一個(gè) logger。static Logger getLogger(String name, String resourceBundleName) 為指定子系統(tǒng)查找或創(chuàng)建一個(gè) logger。注意:name是Logger的名稱,當(dāng)名稱相同時(shí)候,同一個(gè)名稱的Logger只創(chuàng)建一個(gè)。二、Logger的級(jí)別比log4j的級(jí)別詳細(xì),全部定義在java.util.logging.Level里面。各級(jí)別按降序排列如下:
  • SEVERE(最高值)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST(最低值)
此外,還有一個(gè)級(jí)別 OFF,可用來關(guān)閉日志記錄,使用級(jí)別 ALL 啟用所有消息的日志記錄。logger默認(rèn)的級(jí)別是INFO,比INFO更低的日志將不顯示。Logger的默認(rèn)級(jí)別定義是在jre安裝目錄的lib下面。# Limit the message that are PRinted on the console to INFO and above.java.util.logging.ConsoleHandler.level = INFO三、簡(jiǎn)單實(shí)例publicclassTestLogger {publicstaticvoidmain(String[] args) {Logger log = Logger.getLogger("lavasoft");log.setLevel(Level.INFO);Logger log1 = Logger.getLogger("lavasoft");System.out.println(log==log1);//trueLogger log2 = Logger.getLogger("lavasoft.blog");log2.setLevel(Level.WARNING);log.info("aaa");log2.info("bbb");log2.fine("fine");}}true2009-7-28 20:00:30 TestLogger main信息: aaaProcess finished with exit code 0當(dāng)注釋掉 log2.setLevel(Level.WARNING);輸出結(jié)果:true2009-7-28 20:02:02 TestLogger main信息: aaa2009-7-28 20:02:02 TestLogger main信息: bbbProcess finished with exit code 0從這里可以看出,logger的名字是有層級(jí)關(guān)系的。這和log4j的控制方式完全一致。下面是API文檔的原文:一般使用圓點(diǎn)分隔的層次命名空間來命名 Logger。Logger 名稱可以是任意的字符串,但是它們一般應(yīng)該基于被記錄組件的包名或類名,如 java.net 或 javax.swing。此外,可以創(chuàng)建“匿名”的 Logger,其名稱未存儲(chǔ)在 Logger 命名空間中。可通過調(diào)用某個(gè) getLogger 工廠方法來獲得 Logger 對(duì)象。這些方法要么創(chuàng)建一個(gè)新 Logger,要么返回一個(gè)合適的現(xiàn)有 Logger。四、Logger的HandlerHandler 對(duì)象從 Logger 中獲取日志信息,并將這些信息導(dǎo)出。例如,它可將這些信息寫入控制臺(tái)或文件中,也可以將這些信息發(fā)送到網(wǎng)絡(luò)日志服務(wù)中,或?qū)⑵滢D(zhuǎn)發(fā)到操作系統(tǒng)日志中。可通過執(zhí)行 setLevel(Level.OFF) 來禁用 Handler,并可通過執(zhí)行適當(dāng)級(jí)別的 setLevel 來重新啟用。Handler 類通常使用 LogManager 屬性來設(shè)置 Handler 的 Filter、Formatter 和 Level 的默認(rèn)值。java.util.logging.Handlerjava.util.logging.MemoryHandlerjava.util.logging.StreamHandlerjava.util.logging.ConsoleHandlerjava.util.logging.FileHandlerjava.util.logging.SocketHandler例子:publicclassTestLogger {publicstaticvoidmain(String[] args)throwsIOException {Logger log = Logger.getLogger("lavasoft");log.setLevel(Level.INFO);Logger log1 = Logger.getLogger("lavasoft");System.out.println(log==log1);//trueLogger log2 = Logger.getLogger("lavasoft.blog");//log2.setLevel(Level.WARNING);ConsoleHandler consoleHandler =newConsoleHandler();consoleHandler.setLevel(Level.ALL);log.addHandler(consoleHandler);FileHandler fileHandler =newFileHandler("C:/testlog%g.log");fileHandler.setLevel(Level.INFO);log.addHandler(fileHandler);log.info("aaa");log2.info("bbb");log2.fine("fine");}}輸出結(jié)果:true2009-7-28 20:36:14 TestLogger main信息: aaa2009-7-28 20:36:14 TestLogger main信息: aaa2009-7-28 20:36:14 TestLogger main信息: bbb2009-7-28 20:36:14 TestLogger main信息: bbbProcess finished with exit code 0查看C盤:可見,默認(rèn)的日志方式是xml格式,很爛。所以最好自定義下logger的格式。需要用Formatter來定義。五、Logger的FormatterFormatter 為格式化 LogRecords 提供支持。一般來說,每個(gè)日志記錄 Handler 都有關(guān)聯(lián)的 Formatter。Formatter 接受 LogRecord,并將它轉(zhuǎn)換為一個(gè)字符串。有些 formatter(如 XMLFormatter)需要圍繞一組格式化記錄來包裝頭部和尾部字符串。可以使用 getHeader 和 getTail 方法來獲得這些字符串。LogRecord 對(duì)象用于在日志框架和單個(gè)日志 Handler 之間傳遞日志請(qǐng)求。LogRecord(Level level, String msg) 用給定級(jí)別和消息值構(gòu)造 LogRecord。java.util.logging.Formatterjava.util.logging.SimpleFormatterjava.util.logging.XMLFormatter看個(gè)例子就明白了:publicclassTestLogger {publicstaticvoidmain(String[] args)throwsIOException {Logger log = Logger.getLogger("lavasoft");log.setLevel(Level.INFO);Logger log1 = Logger.getLogger("lavasoft");System.out.println(log == log1);//trueLogger log2 = Logger.getLogger("lavasoft.blog");//log2.setLevel(Level.WARNING);ConsoleHandler consoleHandler =newConsoleHandler();consoleHandler.setLevel(Level.ALL);log.addHandler(consoleHandler);FileHandler fileHandler =newFileHandler("C:/testlog%g.log");fileHandler.setLevel(Level.INFO);fileHandler.setFormatter(newMyLogHander());log.addHandler(fileHandler);log.info("aaa");log2.info("bbb");log2.fine("fine");}}classMyLogHanderextendsFormatter {@OverridepublicString format(LogRecord record) {returnrecord.getLevel() +":"+ record.getMessage()+"/n";}}輸出:在控制和C盤輸出的文件如圖到此,Java自帶的Logger內(nèi)容就沒了。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 察雅县| 岱山县| 彰武县| 内乡县| 鄂托克旗| 三穗县| 敖汉旗| 壤塘县| 馆陶县| 西峡县| 台湾省| 石柱| 孟津县| 和静县| 乃东县| 南平市| 鸡泽县| 正阳县| 平遥县| 谢通门县| 沂水县| 凤阳县| 宁强县| 东乌珠穆沁旗| 万安县| 宁南县| 中宁县| 阿拉善左旗| 高雄市| 科技| 中西区| 商河县| 阳城县| 娱乐| 丹阳市| 武川县| 封丘县| 盐池县| 策勒县| 万宁市| 罗田县|