packagecn.mucang.android.weizhanglib.data;importandroid.os.Environment;importandroid.text.format.DateFormat;importandroid.util.Log;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.PrintWriter;importjava.io.StringWriter;/***Createdbysanderson14-10-8.*/publicclassLoger{privatestaticStringTAG="LOGER";privatestaticFilelogFile=newFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/XiaoMiSiJi.log");privatestaticStringfmt="[%s]";privatestaticStringdf="yyyy-MM-ddkk:mm:ss";privatestaticFileWriterfw=null;privatestaticBufferedWriterbw=null;privatestaticStringWritersw=null;privatestaticPrintWriterpw=null;privatestaticbooleanlog=true;privatestaticbooleanwrite=true;static{try{if(write){if(!logFile.exists()){logFile.createNewFile();}if(fw==null){fw=newFileWriter(logFile,true);}if(bw==null){bw=newBufferedWriter(fw);}}}catch(Exceptione){Log.e(TAG,"初始化日志组建失败",e);write=false;}}publicstaticvoidwrite(Stringlogs){StringlogString=String.format(fmt,DateFormat.format(df,System.currentTimeMillis()).toString())+logs;try{bw.write(logString);bw.newLine();bw.flush();fw.flush();}catch(Exceptione){Log.e(TAG,"write()",e);write=false;}}publicstaticvoidwrite(Stringlog,Throwablethrowable){sw=newStringWriter();pw=newPrintWriter(sw);throwable.printStackTrace(pw);Stringerror=sw.getBuffer().toString();StringlogString=String.format(fmt,DateFormat.format(df,System.currentTimeMillis()).toString())+log+"==>"+error;try{bw.write(logString);bw.newLine();bw.flush();fw.flush();}catch(Exceptione){Log.e(TAG,"write()error",e);write=false;}finally{try{sw.close();pw.close();}catch(Exceptione){Log.e(TAG,"write()error",e);write=false;}sw=null;pw=null;}}publicstaticvoidi(Stringmsg){i(TAG,msg);}publicstaticvoidi(Stringtag,Stringmsg){if(log){Log.i(tag,msg);}if(write){write(msg);}}publicstaticvoidv(Stringmsg){v(TAG,msg);}publicstaticvoidv(Stringtag,Stringmsg){if(log){Log.v(tag,msg);}if(write){write(msg);}}publicstaticvoidd(Stringmsg){d(TAG,msg);}publicstaticvoidd(Stringtag,Stringmsg){if(log){Log.d(tag,msg);}if(write){write(msg);}}publicstaticvoidw(Stringmsg){w(TAG,msg);}publicstaticvoidw(Stringtag,Stringmsg){if(log){Log.w(tag,msg);}if(write){write(msg);}}publicstaticvoide(Stringmsg){e(TAG,msg);}publicstaticvoide(Stringtag,Stringmsg){if(log){Log.e(tag,msg);}if(write){write(msg);}}publicstaticvoide(Stringmsg,Throwablee){e(TAG,msg,e);}publicstaticvoide(Stringtag,Stringmsg,Throwablee){if(log){Log.e(tag,msg,e);}if(write){write(msg,e);}}//这个释放资源。若退出程序部在记录和打印日志则调用publicstaticvoidclose(){try{if(fw!=null){fw.close();fw=null;}if(bw!=null){bw.close();bw=null;}if(sw!=null){sw.close();sw=null;}if(pw!=null){pw.close();pw=null;}}catch(Exceptione){Log.e(TAG,"close()error",e);write=false;}}}


更多相关文章

  1. android 横竖屏
  2. Android(安卓)面试:常见问题总结
  3. android WebView结合javascript相互调用
  4. android WebView结合javascript相互调用
  5. Android(安卓)App怎样调用 Frameworks Bluetooth接口
  6. [置顶] android AIDL 进程间通信
  7. Android(安卓)app集成友盟崩溃日志收集
  8. Android(安卓)自定义设置文本字体间间距
  9. Android(安卓)Property实现介绍

随机推荐

  1. android 消息机制(2)
  2. Android(安卓)命令行手动编译打包详解
  3. Android(安卓)之 Bluetooth
  4. android自动屏幕旋转流程分析
  5. Android(安卓)SDK与API版本的对应关系
  6. Android(安卓)SQLiteOpenHelper Sqlite数
  7. Android(安卓)屏幕适配
  8. gravity和android:layout_gravity区别
  9. Android菜单详解(三)——SubMenu和IconMenu
  10. Android(安卓)animation 学习