Android将应用log信息保存文件
来源:互联网 发布:软件开发需求文档 编辑:程序博客网 时间:2024/06/05 07:05
package com.tongseng.lgocat;import android.content.Context;import android.os.Environment;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;/** * Created by tongsheng on 2016/7/19. *//** * 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 + "MyAPPLog";} else {// 如果SD卡不存在,就保存到本应用的目录下PATH_LOGCAT = context.getFilesDir().getAbsolutePath()+ File.separator + "VSLink";}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, "Logcat-"+ LogcatDate.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((LogcatDate.getFileName() + " " + 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.tongseng.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; } public static String getDateEN() { SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date1 = format1.format(new Date(System.currentTimeMillis())); return date1; } }
OK,所有事情做完之后,在我们的应用中start一下就OK了,使用完之后,记得调用一下stop:
package com.tongseng.logcat;import android.app.Application;import android.os.Handler;public class RemoteApplication extends Application {@Overridepublic void onCreate() {super.onCreate();LogcatHelper.getInstance(this).start();}@Overridepublic void onTerminate() {super.onTerminate();LogcatHelper.getInstance(this).stop();}@Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);}}
0 0
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存到文件
- 应用log信息保存文件
- 将Android应用log信息保存到手机本地
- android将log保存到文件
- POJ - 1723 Soldiers 士兵站队 排序+中位数
- LeetCode Perfect Squares(动态规划)
- R语言异常值处理方法总结
- 用Java访问带有Kerberos认证的HBase
- hihocoder1039:字符串
- Android将应用log信息保存文件
- MyBatis
- #163 – Constructing FrameworkPropertyMetadata(构造FrameworkPropertyMetadata)
- Android仿微信,上传本地多张图片,缩放预览,以及图片处理等
- TreeSet中红黑树依赖的2种排序方式
- 三门问题
- iOS正则表达式
- 随便唠叨一下...
- 机器学习2 梯度下降