博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android将应用调试log信息保存在SD卡
阅读量:5889 次
发布时间:2019-06-19

本文共 5648 字,大约阅读时间需要 18 分钟。

转载:

 

把自己应用的调试信息写入到SD卡中。

package com.sdmc.hotel.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;  import android.util.Log;  /**  * log日志统计保存  * 会打印i,e,w,不会打印d * 每次开启应用,就会把上次的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); } Log.i("path", PATH_LOGCAT);///storage/sdcard0/miniGPS 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 *:e *:i | grep \"(" + mPID + ")\"";//会打印i,e,w,不会打印d } 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()); } } } 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; } } } } }

 

 

系统权限

 

 

时间工具类:

package com.sdmc.hotel.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    }  }

 

 

方法的调用:

public class MyApplication extends Application {        @Override      public void onCreate() {                LogcatHelper.getInstance(this).start();      }  }

 

 

pspspspspsp

 

转载于:https://www.cnblogs.com/lipeineng/p/5434078.html

你可能感兴趣的文章
webpack8--删除dist目录,压缩分离后的CSS
查看>>
微信小程序开发:http请求
查看>>
【netcore基础】.NET Core使用EPPlus实现MVC API里的Excel导出功能 配置中文表头
查看>>
对C++ templates类模板的几点补充(Traits类模板特化)
查看>>
VC++ .net 2005运行库解析
查看>>
转自CSDN:写给25岁以上单身男性的100条忠告
查看>>
经纬度坐标系与UTM MGRS坐标系之间的转换 c# 版本
查看>>
二度社区免费论坛v1.0正式提供下载
查看>>
MSC/VLR/SSP
查看>>
如何连接oracle数据库及故障解决办法
查看>>
工作流 - 技术备忘录
查看>>
void及void指针类型
查看>>
Linux下Socket编程的端口问题( Bind error: Address already in use )
查看>>
C#泛型编程
查看>>
matlab练习程序(纹理合成)
查看>>
关于Silverlight_Tools.exe安装不上的问题
查看>>
Asp.net 实现GridView分页时记录CheckBox状态
查看>>
关于事务
查看>>
实现用户注册验证码
查看>>
WM有约II(九):再谈部署
查看>>