在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());
}
}