1. 程式人生 > >斷言和日誌

斷言和日誌

五.斷言

1.斷言(Assertion)是一種程式除錯方式

--使用assert關鍵字

--斷言條件預期為true

--如果斷言失敗,丟擲AssertionError

--可選斷言訊息,斷言失敗時可以丟擲。

斷言的特點:

--不能用於可恢復的程式錯誤,可恢復的程式應該丟擲異常

--只應該用於開發和測試階段。

啟用斷言:

jvm默然關閉斷言指令

給類啟用斷言 -ea:com.feiyangedu.sample.Main

可以指定特定的包啟用斷言-ea:com.feiyangedu...

六.日誌

1.什麼是日誌

--為了取代System.out.println()

--可以設定輸出樣式

--可以設定輸出級別,禁止某些級別輸出

--可以被重定向到檔案

--可以按包名控制日誌級別

2.jdk logging定義了7個日誌級別

--SEVERE

--WARNING

--INFO(預設)

--CONFIG

--FINE

--FINER

--FINEST

指定哪個級別就可以用該級別和以上級別。

3.jdk logging的侷限:

--jvm啟動時讀取配置檔案並完成初始化

--jvm啟動後無法修改配置

--需要在JVN啟動時傳遞引數

-Djava.util.logging.config.file = config-file-name

六.commons logging

commons logging

--可以掛接不同的日誌系統

--可以通過配置檔案指定掛接的日誌系統

--自動搜尋並使用Log4j

--使用JDK Logging(JDK >=1.4)

基本用法:

public class main{

public static void main(String[] args){

Log log = LogFactory.getLog(Main.class);

log.info("ddd");

log.warn("end.");

}

}

6個日誌級別:

FATAL

ERROR

WARNING

INFO

DEBUG

TRACE

在靜態方法中引用Log:

public class Main{

static final Log log = LogFactory.getLog(Main.class);

}

在例項方法中

public class Person{

final Log log = LogFactory.getLog(getClass());

}

在父類中例項化Log

public abstract class Base{

protected final Log log = LogFactory.getLog(getClass());

}

七.log4j

通過Commons Logging實現日誌,不需要修改diamante即可使用Log4j

使用Log4j只需要把log4j2.xml和相關jar放入classpath

如果要更換Log4j,只需要移除log4j2.xml和相關jar

只有擴充套件Log4j,才需要引用Log4j的介面。