斷言和日誌
五.斷言
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的介面。