package com.foundreams.profs_chinese.payutil;
import java.text.SimpleDateFormat;
import java.util.Date;

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 android.content.Context;
import android.os.Environment;
import android.widget.EditText;

/**

  • log日志统计保存

  • @author way

  • */

public class Loger {

private static Loger INSTANCE = null;  private static String PATH_LOGCAT;  private LogDumper mLogDumper = null;  private int mPId;  /**  *   * 初始化目录  *   * */  public void init(Context context) {      if (Environment.getExternalStorageState().equals(              Environment.MEDIA_MOUNTED)) {// 优先保存到SD卡中           PATH_LOGCAT = Environment.getExternalStorageDirectory()                  .getAbsolutePath() + File.separator + "LOG";      } else {// 如果SD卡不存在,就保存到本应用的目录下           PATH_LOGCAT = context.getFilesDir().getAbsolutePath()                  + File.separator + "LOG";      }      File file = new File(PATH_LOGCAT);      if (!file.exists()) {          file.mkdirs();      }  }  public static Loger getInstance(Context context) {      if (INSTANCE == null) {          INSTANCE = new Loger(context);      }      return INSTANCE;  }  private Loger(Context context) {      init(context);      mPId = android.os.Process.myPid();  }  public void start() {      if (mLogDumper == null)          mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT);      mLogDumper.start();  }  public void stop() {      if (mLogDumper != null) {          mLogDumper.stopLogs();          mLogDumper = null;      }  }  private class LogDumper extends Thread {      private Process logcatProc;      private BufferedReader mReader = null;      private boolean mRunning = true;      String cmds = null;      private String mPID;      private FileOutputStream out = null;      public LogDumper(String pid, String dir) {          mPID = pid;          try {              out = new FileOutputStream(new File(dir, "GPS-"+ MyDate.getFileName() + ".log"));          } catch (FileNotFoundException e) {              // TODO Auto-generated catch block               e.printStackTrace();          }          /**          *           * 日志等级:*:v , *:d , *:w , *:e , *:f , *:s          *           * 显示当前mPID程序的 E和W等级的日志.          *           * */          // cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";           // cmds = "logcat  | grep \"(" + mPID + ")\"";//打印所有日志信息           // cmds = "logcat -s way";//打印标签过滤信息           cmds = "logcat  | grep \"(" + mPID + ")\"";    }      public void stopLogs() {          mRunning = false;      }      @Override      public void run() {          try {              logcatProc = Runtime.getRuntime().exec(cmds);              mReader = new BufferedReader(new InputStreamReader(                      logcatProc.getInputStream()), 1024);              String line = null;              while (mRunning && (line = mReader.readLine()) != null) {                if (!mRunning) {                    break;                 }                if (line.length() == 0) {                      continue;                  }                  if (out != null && line.contains(mPID)) {                      out.write((MyDate.getDateEN() + "  " + line + "\n")  .getBytes());  

// out.flush();

                }              }          } catch (IOException e) {            e.printStackTrace();          } finally {            if (logcatProc != null) {                  logcatProc.destroy();                  logcatProc = null;              }            if (mReader != null) {                try {                    mReader.close();                      mReader = null;                  } catch (IOException e) {                      e.printStackTrace();                  }              }            if (out != null) {                  try {                     out.flush();                    out.close();                  } catch (IOException e) {                      e.printStackTrace();                  }                  out = null;              }          }      }  }  

public static class MyDate {

public static String getFileName() {      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");      String date = format.format(new Date(System.currentTimeMillis()));      return date;// 2012年10月03日 23:41:31   }  public static String getDateEN() {      SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");      String date1 = format1.format(new Date(System.currentTimeMillis()));      return date1;// 2012-10-03 23:41:31   }  

}
}

更多相关文章

  1. [android]-记录日志到sd卡
  2. android 获取手机联系人信息
  3. ArcGIS Runtime SDK for Android 100.x系列中如何去除水印和ESRI
  4. Android基础之CursorAdapter 的用法与获取联系人信息显示、并点
  5. Android SDK 26以后ant编译错误解决办法(错误信息:taskdef A class
  6. 基于Android Q 修改默认音量等级
  7. Android群英传知识点回顾——第九章:Android系统信息与安全机制

随机推荐

  1. Android之AIDL
  2. Android(安卓)解决 RecyclerView 嵌套 Sc
  3. Android(安卓)响应键盘移动图标
  4. android alertdialog 弹出框
  5. android 自定义progressBar
  6. PduHeader
  7. 引入layoutlib.jar
  8. android 多点触摸 放大 缩小 图片
  9. 闹铃设置
  10. android 网络检测