轉載: http://whotodo.iteye.com/blog/1701596
在物件導向的世界裡,我們可以將對象擬人化。它們不僅擁有資源(資料),還能實現一些功能(方法)。Logger就是Java內建的,Android也支援的一個可以將log資訊寫到控制台或檔案的log資訊記錄員。
package org.vhow.android; import java.io.IOException; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; public class AppMain { public static void main(String[] args) throws SecurityException, IOException { // Create a Logger whose name is "AppMain" Logger aLogger = Logger.getLogger(AppMain.class.getName()); // This Logger object will records all kinds of logs. aLogger.setLevel(Level.ALL); // Write logging message to Console. sentLogMessageToConsole(aLogger); // Writer logging message to a File. sentLogMessageToFile(aLogger); // Log a message. aLogger.log(Level.INFO, "info"); } private static void sentLogMessageToConsole(Logger aLogger) { // A ConsoleHandler object can publish records to System.err. ConsoleHandler aConsoleHandler = new ConsoleHandler(); // All kinds of logs will be logged by this handler. aConsoleHandler.setLevel(Level.ALL); // Format LogRecords for this Handler. aConsoleHandler.setFormatter(new LogRecordFormatter()); // Add the ConsoleHanler object to receive the logging messages. aLogger.addHandler(aConsoleHandler); } private static void sentLogMessageToFile(Logger aLogger) throws IOException { // A FileHandler object can writer log message to a file. FileHandler aFileHandler = new FileHandler("logs.log"); // All kinds of logs will be logged by this handler aFileHandler.setLevel(Level.ALL); // / Add the FileHandler object to receive the logging messages. aLogger.addHandler(aFileHandler); } }
我們還需要一個定義log record格式的類
package org.vhow.android; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; class LogRecordFormatter extends Formatter { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date; @Override public String format(LogRecord record) { date = new Date(record.getMillis()); return dateFormat.format(date) + ", " + record.getSourceClassName() + ", " + record.getSourceMethodName() + ", " + record.getLevel() + ": " + record.getMessage() + "\n"; } }
如果我們不規定log資訊的格式,則預設的打到控制台的log格式如下:
預設寫到檔案中的log格式如下: