原文链接:http://blog.youkuaiyun.com/wyzxk888/article/details/7478152
在Android开发的时候经常会遇到手机offline,影响日志的查看与分析。为此,我写了一个简单的类用于将日志写入文件中,便于以后调试的时候可以拿来使用:
- package org.test;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Writer;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class LogWriter {
- private static LogWriter mLogWriter;
- private static String mPath;
- private static Writer mWriter;
- private static SimpleDateFormat df;
- private LogWriter(String file_path) {
- this.mPath = file_path;
- this.mWriter = null;
- }
- public static LogWriter open(String file_path) throws IOException {
- if (mLogWriter == null) {
- mLogWriter = new LogWriter(file_path);
- }
- File mFile = new File(mPath);
- mWriter = new BufferedWriter(new FileWriter(mPath), 2048);
- df = new SimpleDateFormat("[yy-MM-dd hh:mm:ss]: ");
- return mLogWriter;
- }
- public void close() throws IOException {
- mWriter.close();
- }
- public void print(String log) throws IOException {
- mWriter.write(df.format(new Date()));
- mWriter.write(log);
- mWriter.write("\n");
- mWriter.flush();
- }
- public void print(Class cls, String log) throws IOException { //如果还想看是在哪个类里可以用这个方法
- mWriter.write(df.format(new Date()));
- mWriter.write(cls.getSimpleName() + " ");
- mWriter.write(log);
- mWriter.write("\n");
- mWriter.flush();
- }
- }
使用这个类的代码:
- private LogWriter mLogWriter;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- File logf = new File(Environment.getExternalStorageDirectory()
- + File.separator + "DemoLog.txt");
- try {
- mLogWriter = LogWriter.open(logf.getAbsolutePath());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Log.d(tag, e.getMessage());
- }
- log("onCreate()");
- }
- public void log(String msg) {
- Log.d(tag, msg);
- try {
- mLogWriter.print(AlarmManagerDemo.class, msg);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Log.d(tag, e.getMessage());
- }
- }