資源簡介
便于開發,測試,定位問題。方便查看日志。所有日志保存本地文件,可按日志等級保存,定期刪除,文件最長可保存自定義天數,代碼中寫的3天時間,<=3天 日志文件將會刪除。
代碼片段和文件信息
package?com.genlot.lenb.util;
import?android.content.Context;
import?android.os.Environment;
import?android.os.StatFs;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.text.SimpleDateFormat;
import?java.util.Calendar;
import?java.util.Date;
/**
?*?log日志統計保存
?*?日志最多保存3天,如果內存不足,逐個刪除近3+i?天日志
?*
?*?@author?songzhenzhen
?*/
public?class?LogcatHelper?{
????private?static?LogcatHelper?instance?=?null;
????private?int?order?=?0;
????private?int?mPId;
????private?String?pathLogcat;
????private?LogThread?mLogThread?=?null;
????private?String?mylogfilename?=?“.log“;
????private?int?SDCARD_LOG_FILE_SAVE_DAYS?=?3;
????private?static?SimpleDateFormat?myLogSdf?=?new?SimpleDateFormat(“yyyy-MM-dd?HH:mm:ss“);
????private?static?SimpleDateFormat?logfile?=?new?SimpleDateFormat(“yyyyMMdd?HH:mm:ss“);
???
????public?void?init(Context?context)?{
????????if?(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))?{
????????????pathLogcat?=?Environment.getExternalStorageDirectory().getAbsolutePath()?+?File.separator?+?“HN_Log“;
????????}?else?{
pathLogcat?=?context.getFilesDir().getAbsolutePath()?+?File.separator?+?“HN_Log“;
????????}
????????File?file?=?new?File(pathLogcat);
????????if?(!file.exists())?{
????????????file.mkdirs();
????????}?else?{
????????????if?(availableSpace())?{
????????????????delFile(order);
????????????}?else?{
????????????????deleteDirectory(pathLogcat);
????????????}
????????}
????}
??
????private?boolean?availableSpace()?{
????????File?root?=?Environment.getRootDirectory();
????????StatFs?sf?=?new?StatFs(root.getPath());
????????long?blockSize?=?sf.getBlockSize();
????????long?blockCount?=?sf.getBlockCount();
????????long?availCount?=?sf.getAvailableBlocks();
???????
????????long?totalBlocks?=?blockSize?*?blockCount?/?1024;
??????
????????long?availableBlocks?=?availCount?*?blockSize?/?1024;
????????if?(availableBlocks?????????????return?true;
????????}?else?{
????????????return?false;
????????}
????}
????public?static?LogcatHelper?getInstance(Context?context)?{
????????if?(instance?==?null)?{
????????????instance?=?new?LogcatHelper(context);
????????}
????????return?instance;
????}
????private?LogcatHelper(Context?context)?{
????????init(context);
????????mPId?=?android.os.Process.myPid();
????}
????public?void?start()?{
????????if?(mLogThread?==?null)
????????????mLogThread?=?new?LogThread(String.valueOf(mPId)?pathLogcat);
????????mLogThread.start();
????}
????public?void?stop()?{
????????if?(mLogThread?!=?null)?{
????????????mLogThread.stopLogs();
????????????mLogThread?=?null;
????????}
????}
????private?class?LogThread?extends?Thread?{
????????private?Process?logcatProc;
????????private?BufferedReader?mReader?=?null;
????????private?boolean?mRunning
評論
共有 條評論