转载: 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格式如下: