1.簡(jiǎn)介:
ava.util.logging,它可以對(duì)程序中的日志記錄進(jìn)行相當(dāng)復(fù)雜的控制。例如:通過它可以指定日志的級(jí)別和日志的位置(控制臺(tái)、文件、套接字、 內(nèi)存緩沖區(qū)),也可以創(chuàng)建子記錄器,通過它可以用程序控制的方式來指定想記錄的內(nèi)容,也可以使用配置文件來指定,而不需要去改動(dòng)程序。
2.體系:
3.實(shí)例:
import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.logging.Handler;
import java.util.logging.FileHandler;
import java.io.IOException;
public class LogDemo3 {
static Logger logger = Logger.getLogger("");
public static void main(String arg[]) {
try {
FileHandler fh = new FileHandler("logfile");
logger.addHandler(fh);
} catch(IOException e) {
System.err.println("Cannot open log file for output");
}
Handler handler[] = logger.getHandlers();
for(int i=0; i<handler.length; i++)
handler[i].setLevel(Level.FINEST);
logger.setLevel(Level.FINEST);
LogDemo3 ld = new LogDemo3();
ld.demonstrate();
}
LogDemo3() {
logger.info("LogDemo3 instantiated.");
}
public void demonstrate() {
logger.fine("Entering the demonstrate method.");
for(int i=0; i<10; i++) {
logger.finest("Loop counter: " + i);
}
logger.fine("Exiting the demonstrate method.");
}
}
4.技巧(轉(zhuǎn)載)
java . util . logging 包提供了強(qiáng)大的日志輸出功能,正確和有效的使用這些功能需要一些技巧:
- 了解不同的 Level , Level .FINE , LEVEL .FINER , LEVEL .FINEST 用來調(diào)試和跟蹤程序,比如打印一些調(diào)試信息,異常等。 Level .INFO 將打印信息到控制臺(tái)。
- 使用 Logger.isLoggable( Level ) 方法檢測(cè)當(dāng)前的 Level ,以此來判斷是否輸出日志,日志也應(yīng)該遵循需要時(shí)才輸出的原則,避免生成大量的調(diào)試信息字符串,占用系統(tǒng)內(nèi)存,影響性能。
- 必要時(shí)程序化的打開和關(guān)閉日志,例如在開發(fā)程序時(shí)開啟大部分日志,為了查錯(cuò)和調(diào)試程序,在程序發(fā)布時(shí)關(guān)閉大部分日志,避免影響客戶和影響程序性能。
- 必要時(shí)可以針對(duì)一個(gè)模塊使用唯一的 Logger ,也就是創(chuàng)建 Logger 時(shí)傳入子模塊的名字,所有類使用同一個(gè) Logger ,避免生成太多的 Logger 實(shí)例。
- 下邊是使用日志工具的一段代碼:
import java .io.IOException;
import java . util . logging .ConsoleHandler;
import java . util . logging .FileHandler;
import java . util . logging . Level ;
import java . util . logging .Logger;
import java . util . logging .SimpleFormatter;
/**
*/
public class LoggerTest{
// 構(gòu)建Logger
private static Loggerlog = Logger.getLogger(LoggerTest. class .getName());
/** CreatesanewinstanceofLoggerTest */
public LoggerTest(){
// 使用此方法避免生成需要輸出的字符串
if (log.isLoggable( Level .FINE)){
log.log( Level .FINE, " startconstructing... " );
}
}
/**
*設(shè)置指定包的日志輸出級(jí)別.
*
* @param packageName指定的包
* @param fileName指定日志的輸出文件
* @param level 日志輸出級(jí)別
*/
private static void setLogLevel(StringpackageName,StringfileName, Level level ){
try {
FileHandlerfileHandler = new FileHandler( " %h/ " + fileName + " %u.log " );
fileHandler.setFormatter( new SimpleFormatter());
ConsoleHandlerconsoleHandler = new ConsoleHandler();
consoleHandler.setLevel( level );
Logger.getLogger(packageName).addHandler(fileHandler);
Logger.getLogger(packageName).addHandler(consoleHandler);
Logger.getLogger(packageName).setLevel( level );
} catch (SecurityExceptionex){
ex.printStackTrace();
} catch (IOExceptionex){
ex.printStackTrace();
}
}
public static void main(String[]args){
// 啟用當(dāng)前包的全部日志輸出
StringpackageName = " javatest " ;
setLogLevel(packageName,packageName, Level .ALL);
LoggerTesttest = new LoggerTest();
}
}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
