package com.way.util;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;/** * log日志统计保存 *  * @author way *  */public class LogcatHelper {private static LogcatHelper 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 + "miniGPS";} else {// 如果SD卡不存在,就保存到本应用的目录下PATH_LOGCAT = context.getFilesDir().getAbsolutePath()+ File.separator + "miniGPS";}File file = new File(PATH_LOGCAT);if (!file.exists()) {file.mkdirs();}}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 (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 blocke.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 *:e *:i | grep \"(" + mPID + ")\"";}public void stopLogs() {mRunning = false;}@Overridepublic 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());}}} 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.close();} catch (IOException e) {e.printStackTrace();}out = null;}}}}}

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_LOGS" />

package com.way.util;import java.text.SimpleDateFormat;import java.util.Date;public 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}}

OK,所有事情做完之后,在我们的应用中start一下就OK了,使用完之后,记得调用一下stop:

public class GPSApplication extends Application {@Overridepublic void onCreate() {// TODO Auto-generated method stubLogcatHelper.getInstance(this).start();}}

更多相关文章

  1. Android手势操作(三)
  2. Android(安卓)log日志输出到文件
  3. Android(安卓)搜索框自动提示及其保存历史记录
  4. Android:使用密码技术安全地保存凭证
  5. Bitmap转为文件保存
  6. 关于android 异常日志抓取监控
  7. Android开发笔记: Activity
  8. 【Android】logcat日志信息过滤
  9. Android左右滑动切换图片

随机推荐

  1. 惊人!Python+FPGA 实现FPGA开发大提速?!!
  2. 基于Xilinx FPGA的高频交易? Aldec公司展
  3. 基于Zynq SoC的D类音频放大器
  4. 合肥市南门小学五(三)班课程表
  5. spring-cloud-alibaba Nacos配置启动
  6. 腾讯计划斥资超百亿收购搜狗,图什么?
  7. 艾伦人工智能研究所发布 AllenNLP 1.0 ,设
  8. “一挖就走”,中芯国际为什么留不住人?
  9. 图神经网络GNN的可解释性问题与解释方法
  10. html制作一张课程表和用户注册表单