当前位置: 移动技术网 > 移动技术>移动开发>Android > Android将应用调试log信息保存在SD卡的方法

Android将应用调试log信息保存在SD卡的方法

2019年07月24日  | 移动技术网移动技术  | 我要评论
把自己应用的调试信息写入到sd卡中。 package com.sdmc.hotel.util; import java.io.bufferedreader;

把自己应用的调试信息写入到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; 
} 
} 
} 
} 
} 

系统权限

<uses-permission android:name="android.permission.write_external_storage" /> 
<uses-permission android:name="android.permission.read_logs" /> 

时间工具类:

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(); 
} 
} 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网