转自:http://blog.csdn.net/way_ping_li/article/details/8487866

废话不多说,直接分享封装好的log信息类:LogcatHelper

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.Date;import android.content.Context;import android.os.Environment;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 + "HuangYn1";} else {// 如果SD卡不存在,就保存到本应用的目录下PATH_LOGCAT = context.getFilesDir().getAbsolutePath()+ File.separator + "HuangYn1";}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, "Log-"+ System.currentTimeMillis() + ".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 -s 'huangyn1' | 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((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;}}}}}

更多相关文章

  1. 【android build】 如何在android.mk中获得打印信息
  2. android 获取设备Id等信息
  3. android获取进程信息,运行内存信息
  4. Android获取SIM卡信息--TelephonyManager
  5. 如何获取 android 的系统日志 logcat
  6. Android Studio生成APK文件名带上版本号等信息
  7. android短信和电话操作常用信息备忘
  8. Android studio应用程序设计——简单的学生信息录入应用app

随机推荐

  1. Android(安卓)build常见Error
  2. android利用JNI调用C++自定义类
  3. 最牛逼android上的图表库MpChart(一) 介绍
  4. Android界面编程——Android基本控件
  5. Android兼容性问题 -- FrameLayout中View
  6. Google Android开发精华教程
  7. 2014非常好用的开源Android测试工具
  8. Android启动流程
  9. Android(安卓)Studio下的目录结构
  10. Android的多媒体框架OpenCore介绍