告別System.out.print()—J2SDK1.4新增Java日誌框架(三) (轉)
-1-15 7:02:04 LoggingLevelTest main:namespace prefix = o ns = "urn:schemas--com::office" />
資訊: INFO級訊息
可以看出,優先順序低於INFO的日誌訊息不被記錄。
Level的構造為protected便於員開發自己的訊息級別類。
import .util.logging.*;
//自定義訊息級別
class myLevel extends Level{
//定義自己的訊息級別SYSE
public static final Level SYSE = new myLevel("SYSE", Level.SEVERE.intValue()+10);
public myLevel(String ln,int v) {
super(ln,v);
}
}
public class MyLevelTest {
public static void main(String args[]) {
Logger logger1 = Logger.getAnonymousLogger();
//設定訊息級別
logger1.setLevel(myLevel.SYSE);
//記錄訊息
logger1.log(myLevel.SYSE,"SYSE訊息");
logger1.severe("SVERE訊息");
}
}
例項4
執行結果:
2003-1-15 15:40:04 MyLevelTest main
SYSE: SYSE訊息
只有SYSE訊息被記錄,SVERE訊息不被記錄,因為自定義級別SYSE高於SEVERE.
(五)Formatter
Formatter負責對LogRecords進行格式化。每個記錄Handler同一個Formatter相關聯。Formatter物件接收從Handler傳來的LogRecord,將其格式化成字串後返回給Handler進行輸出。
Formatter是一個抽象類。在J2SDK1.4中,其子類及它們之間的關係見圖二。
自定義擴充套件Formatter類。例項:MyFormatterTest.java
import java.util.Date;
import java.util.logging.*;
//建立每條日誌記錄以行的日誌格式:
//時間訊息級別訊息ID日誌資訊內容
class MyFormatter extends Formatter {
public String format(LogRecord rec) {
StringBuffer buf = new StringBuffer(1000);
buf.append(new Date().toLocaleString()); //時間
buf.append(' ');
buf.append(rec.getLevel()); //訊息級別
buf.append(' ');
buf.append(rec.getMillis()); //作為訊息ID
buf.append(' ');
buf.append(formatMessage(rec));//格式化日誌記錄資料
buf.append('n'); //換行
return buf.toString();
}
}
public class MyFormatterTest {
public static void main(String args[]){
//建立記錄器
Logger log1 = Logger.getLogger("MyLogger");
//建立記錄處理器
Handler mh = new ConsoleHandler();
//為記錄處理器設定Formatter
mh.setFormatter(new MyFormatter());
//為記錄器新增記錄處理器
log1.addHandler(mh);
//禁止訊息處理將日誌訊息給父級處理器
log1.setUseParentHandlers(false);
//記錄訊息
log1.severe("訊息1");
log1.warning("訊息2");
log1.info("訊息3");
log1.config("訊息4");
}
}
例項5
程式執行結果:
2003-1-15 16:59:38 SEVERE 1042621178968 訊息1
2003-1-15 16:59:40 WARNING 1042621178985 訊息2
2003-1-15 16:59:41 INFO 1042621179105 訊息3
三、
J2SDK1.4的Java Logging的配置檔案():
%J2SDK1.4_HOME%//lig/logging.properties
從配置檔案可以看到:
(一) 自定義日誌配置檔案:
java -Djava.util.logging.config.file=myfile
(二)全域性Handler在Java VM啟動時被載入。
(二) 全域性Handler預設為java.util.logging.ConsoleHandler。
handlers= java.util.logging.ConsoleHandler
所以我們的任何日誌記錄動作都會在控制檯進行顯示。
(三) 預設的訊息記錄級別為:INFO
.level= INFO
在預設情況下我們在控制檯看不見低於INFO級別的日誌訊息。
(四) 預設的Handler訊息格式為java.util.logging.SimpleFormatter
四、日誌框架在程式測試中的應用
Logger類提供了兩個的方法:Logger.entering() ogger.exiting() 。這對我們自己的方法提供了便利的方式。
例子:
記錄方法呼叫的輸入引數和輸出引數 方法myMethod將一個int 追加在一個物件之後。
執行該程式應將logging.properties的
java.util.logging.ConsoleHandler.level = INFO
改為:
java.util.logging.ConsoleHandler.level = ALL
import java.util.logging.*;
public class MyClass {
public String myMethod(int p1, p2) {
Logger logger = Logger.getLogger("com.mycompany.MyClass");
if (logger.isLoggable(Level.FINER)) {
logger.entering(this.getClass().getName(), "myMethod",
new Object[]{new Integer(p1), p2});
}
String tmp = p2.toString() + p1;
if (logger.isLoggable(Level.FINER)) {
logger.exiting(this.getClass().getName(), "myMethod", tmp);
}
return tmp;
}
public static void main(String args[]) {
MyClass mc = new MyClass();
String rslt = mc.myMethod(123,"Hello");
}
}
後記
J2SDK1.4引入的日誌記錄框架為構建簡易的日誌記錄提供了便利的解決方案。雖然還有期它的一些專用日誌包如Log4j,但從簡單的列印輸出到嚴密的、可擴充套件的日誌記錄框架,J2SDK1.4的日誌系統已經足以滿足一般的系統開發的要求。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992917/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 告別System.out.print()—J2SDK1.4新增Java日誌框架(二) (轉)Java框架
- 萬字長文帶你瞭解Java日誌框架使用Java日誌框架Java框架
- Java日誌框架演化歷史Java框架
- 掌握Java各種日誌框架Java框架
- Java 日誌框架 LogbackJava框架
- Java日誌框架那些事兒Java框架
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- linux日誌管理(三)(轉)Linux
- java 日誌脫敏框架 sensitive,優雅的列印脫敏日誌Java框架
- 帶你掌握Java各種日誌框架Java框架
- Java日誌框架:logback詳解Java框架
- Java日誌:您需要了解的4種日誌型別Java型別
- 新增webservice呼叫日誌Web
- flask 框架日誌Flask框架
- Java日誌框架:SLF4J詳解Java框架
- Java常用的日誌框架對比和分析Java框架
- 日誌框架學習框架
- 5款Java開源日誌框架大比拼Java框架
- 減少SQL日誌的三種方法(轉)SQL
- Spring Boot 揭祕與實戰(三) 日誌框架篇 – 如何快速整合日誌系統Spring Boot框架
- Spring Boot 揭祕與實戰(三) 日誌框架篇 - 如何快速整合日誌系統Spring Boot框架
- Oracle日誌組新增冗餘檔案和日誌組Oracle
- 新增、刪除日誌檔案
- SpringBoot 日誌框架Spring Boot框架
- 日誌採集框架Flume框架
- Apche日誌系列(4):日誌分析(轉)
- 為oracle新增重做日誌組及重做日誌成員Oracle
- Redis日誌級別Redis
- log4j日誌輸出級別(轉)
- 日誌秘密Windows登入型別知多少(轉)Windows型別
- Java日誌框架:slf4j作用及其實現原理Java框架
- Apche日誌系列(1):訪問日誌(轉)
- Apche日誌系列(2):錯誤日誌(轉)
- Apche日誌系列(3):定製日誌(轉)
- 三個例項演示 Java Thread Dump 日誌分析Javathread
- 日誌框架SLF4J框架
- jdon框架日誌資訊錯誤框架
- delphi xe 好用的日誌框架框架