【Java學習筆記】日誌操作

來源:互聯網
上載者:User

作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

1.簡介:

ava.util.logging,它可以對程式中的日誌記錄進行相當複雜的控制。例如:通過它可以指定日誌的層級和日誌的位置(控制台、檔案、通訊端、 記憶體緩衝區),也可以建立子記錄器,通過它可以用程式控制的方式來指定想記錄的內容,也可以使用設定檔來指定,而不需要去改動程式。

2.體系:

3.執行個體:

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.技巧(轉載)

java .util .logging 包提供了強大的日誌輸出功能,正確和有效使用這些功能需要一些技巧:

  1. 瞭解不同的Level , Level .FINE , LEVEL .FINER ,LEVEL .FINEST 用來調試和跟蹤程式,比如列印一些調試資訊,異常等。Level .INFO 將列印資訊到控制台。
  2. 使用Logger.isLoggable(Level ) 方法檢測當前的Level ,以此來判斷是否輸出日誌,日誌也應該遵循需要時才輸出的原則,避免產生大量的調試資訊字串,佔用系統記憶體,影響效能。
  3. 必要時程式化的開啟和關閉日誌,例如在開發程式時開啟大部分日誌,為了查錯和偵錯工具,在程式發布時關閉大部分日誌,避免影響客戶和影響程式效能。
  4. 必要時可以針對一個模組使用唯一的Logger ,也就是建立Logger 時傳入子模組的名字,所有類使用同一個Logger ,避免產生太多的Logger 執行個體。
  5. 下邊是使用日誌工具的一段代碼:

package  javatest;
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 {
//  構建Logger
private static  Logger log  =  Logger.getLogger(LoggerTest. class .getName());
/**  Creates a new instance of LoggerTest  */
public  LoggerTest() {
//  使用此方法避免產生需要輸出的字串
if (log.isLoggable(Level .FINE)) {
            log.log(Level .FINE,  " start constructing... " );
        }
    }
/**
     * 設定指定包的日誌輸出層級.
     *
     *  @param  packageName 指定的包
     *  @param  fileName 指定日誌的輸出檔案
     *  @param level  日誌輸出層級
*/
private static void  setLogLevel(String packageName, String fileName, Level level ) {
try  {
            FileHandler fileHandler  = new  FileHandler( " %h/ " + fileName + " %u.log " );
            fileHandler.setFormatter( new  SimpleFormatter());
            ConsoleHandler consoleHandler  = new  ConsoleHandler();
            consoleHandler.setLevel(level );
            Logger.getLogger(packageName).addHandler(fileHandler);
            Logger.getLogger(packageName).addHandler(consoleHandler);
            Logger.getLogger(packageName).setLevel(level );
        }  catch  (SecurityException ex) {
            ex.printStackTrace();
        }  catch  (IOException ex) {
            ex.printStackTrace();
        }
    }    
public static void  main(String[] args) {
//  啟用當前包的全部日誌輸出
        String packageName  = " javatest " ;
        setLogLevel(packageName, packageName, Level .ALL);
        LoggerTest test  = new  LoggerTest();
    }
}

 

作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.