`
whotodo
  • 浏览: 168147 次
文章分类
社区版块
存档分类
最新评论

The Logger in Java and Android

 
阅读更多

在面向对象的世界里,我们可以将对象拟人化。它们不仅拥有资源(数据),还能实现一些功能(方法)。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格式如下:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics