⑴ 如何抓取android logcat日志
您好,很高兴为您解答。
1,安装sdk(参考android
sdk环境安装裂指)
2,使用数据线链接手机,在手机助手的sdcard中建立一个1.log的文件
3,程序运行cmd
4,输入抓取命令:logcat
-s
'*:e'
>
/mmt/sdcard/1.log
5,雹源派使用手机崩溃一次
6,查看日志抓取文件,分不清楚是那个时间段所造成的后果
7,加入命令:-v
time
就会显示出时间
8,输入命令logcat
-v
time
-s
'*:e'
>
/mmt/sdcard/1.log
9,查看结果
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮源贺助,望采纳!
~
o(∩_∩)o~
⑵ 如何获得Android的崩溃日志
已经做成sdk的形式,源码已公开,源码看不懂的请自行google。
如果想定制适应自己app的sdk请自行fork。
AndroidLogCollector
android
app崩溃日志收集sdk 1.0
作者:贾博士
崩溃日志收集方法:
1.LogCollector是lib包,在需要添加崩溃日志sdk的工程中导入此包。
2.导入lib后,在自己的工程的AndroidManifest.xml文件中加入权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
3.在自己的工程中重写自己的application,在oncreate中加入
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);
PS:重写自己的application记得在Manifest注册
参数:
1.Context
2.String UPLOAD_URL ,上传地址url,支持http和https方式,post方法。
3.HttpParameters params ,自定义的类,用于post上传其他参数。
说明:
发生崩溃后,日志会保存在 /data/data/{your package name}/files/ 目录下
日志只有一个文件,多条数据日志保存
日志文件上传成功后会自动删除,上传不成功则不删除
日志格式可以根据自己的需求在源码中改动
http的post传的数据也可自行修改
参考代码:
public class MyApplication extends Application {
//post method , upload logfile url,replace your site . support http or https
private static final String UPLOAD_URL = "http://xxxxxxxx";
@Override
public void onCreate() {
super.onCreate();
//upload logfile , post params.
HttpParameters params = new HttpParameters();
params.add("key1", "value1");
params.add("key2", "value2");
params.add("key3", "value3");
//.......
//replace your key and value;
boolean isDebug = true;
//set debug mode , you can see debug log , and also you can get logfile in sdcard;
LogCollector.setDebugMode(isDebug);
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);//params can be null
}
}
上传日志方法:
需要先在application中执行init,
然后在任何位置添加如下代码:
LogCollector.upload(boolean isWifiOnly);
参数:
1.boolean isWifiOnly; true代表只在wifi情况下发送,false代表有网的情况下就发送(包括流量和wifi)
您可以在service,activity等位置的合适时机触发,不会卡界面也不会影响性能。
参考代码:
private void uploadLogFile(){
boolean isWifiOnly = true;//only wifi mode can upload
LogCollector.upload(isWifiOnly);//upload at the right time
}
调试:
在init之前调用
LogCollector.setDebugMode(boolean isDebug);
说明:
1.开启调试后可以看到堆栈的log信息
2.同时可以在sd卡下的Android/data/{your package name}/Log/ 目录下可以查看保存的崩溃log日志
该目录下的日志不会自动删除,请及时清空,避免占用空间
⑶ 为什么 android的SD卡上 上产生log 文件夹,占很大的空间,不停产生。
这不是原生的安卓产生的,是你在安卓上装的某个程序产生的,安卓本身是不会往SD卡上写LOG的。至于到底是哪个程序写的,你只能自己找啦很多程序都会写的。另外记住,写大量LOG文件是要消耗一定的手机性能的,也会令你的手机更耗电。你最好找出这个程序,卸载它。
⑷ android 错误日志 哪里
1、创建MyCrashHandler类
package com.example.yu.myapplication;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.Date;
/**
* 全局捕获导常,保存到本地错误日志。日志
* 路径位于sdcard/错误日志Log/myErrorLog下。
*/
public class MyCrashHandler implements UncaughtExceptionHandler {
private static MyCrashHandler instance;
public static MyCrashHandler getInstance() {
if (instance == null) {
instance = new MyCrashHandler();
}
return instance;
}
public void init(Context ctx) {
Thread.(this);
}
/**
* 核心方法,当程序crash 会回调此方法, Throwable中存放这错误日志
*/
@Override
public void uncaughtException(Thread arg0, Throwable arg1) {
String logPath;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
logPath = Environment.getExternalStorageDirectory()
.getAbsolutePath()
+ File.separator
+ File.separator
+ "错误日志Log";
File file = new File(logPath);
if (!file.exists()) {
file.mkdirs();
}
try {
FileWriter fw = new FileWriter(logPath + File.separator
+ "myErrorlog.log", true);
fw.write(new Date() + "错误原因:\n");
// 错误信息
// 这里还可以加上当前的系统版本,机型型号 等等信息
StackTraceElement[] stackTrace = arg1.getStackTrace();
fw.write(arg1.getMessage() + "\n");
for (int i = 0; i < stackTrace.length; i++) {
fw.write("file:" + stackTrace[i].getFileName() + " class:"
+ stackTrace[i].getClassName() + " method:"
+ stackTrace[i].getMethodName() + " line:"
+ stackTrace[i].getLineNumber() + "\n");
}
fw.write("\n");
fw.close();
// 上传错误信息到服务器
// uploadToServer();
} catch (IOException e) {
Log.e("crash handler", "load file failed...", e.getCause());
}
}
arg1.printStackTrace();
android.os.Process.killProcess(android.os.Process.myPid());
}
}
⑸ android 中怎么把logcat和radio的log保存到SD卡中
在DDMS 中 可以保存 logcat 的。
⑹ Android SD卡上文件操作及记录日志操作具体方法
本文实例讲述了Android SD卡上文件操作及记录隐态日志操作的方法灶兆源。分享给大家供大家参考,具猜搜体如下:
SD卡是否存在
private boolean checkSDCardStatus() { boolean SDCardStatus = false; String sDStateString = android.os.Environment.getExternalStorageState(); if (sDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) { SDCardStatus = true; } else
SD卡不可用
return SDCardStatus
SD卡上是否有APK文件
private boolean checkFileExist(String iFilePath) { boolean fileExist = false; if (checkSDCardStatus()) { File myFile = new File(iFilePath); if (myFile.exists()) { fileExist = true; } } return fileExist;}
删除文件
private void Apk(String iFilePath) { if (checkSDCardStatus()) { File myFile = new File(iFilePath); if (myFile.exists()) { myFile.(); } }}
在SD 卡上用txt记录
public static void logOnFile(String format, Object... args){ String logstr = String.format(format, args); SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sDateFormat.format(new java.util.Date()); logstr = "/r/n-------------------------/r/n" + date + "/r/n" + logstr; FileOutputStream fout; DataOutputStream dataout; try { fout = new FileOutputStream("//sdcard//log.txt",true); dataout = new DataOutputStream(fout); dataout.writeUTF(logstr); dataout.flush(); dataout.close(); fout.flush(); fout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}
希望本文所述对大家Android程序设计有所帮助。
⑺ Android 日志系统分析(三):logcat
logcat 作为读取日志的工具,相当于client 的角色;在前两篇文章中,关于 logcat 如何与其他部分沟通获取日志信息的流程已经介绍的比较清晰,本文不在赘述,转而归纳一下 logcat 的一些常用指令,并对其中一些做详细分析
Android 日志系统为日志消息保留了多个环形缓冲区,但并非多有的日志消息都会发送到默认的环形缓冲区。这里可以采用 logcat -b 命令查看设备的其他缓冲区:
如果需要查看内核空间日志信息,可采用如下几种方式查看:
1、读取 /proc/kmsg ,命令如下
读取/proc/kmsg属于消费型读取,读取之后再次读取不会显示已经读取过的日志信息
2、读取 /dev/kmsg ,命令如下
读取/dev/kmsg会显示缓存区里面的所有日志信息。新写入的日志信息会不断累加到日志缓冲器中
3、使用 dmesg 命令读取
dmesg命令读取一次只显示一部分日志,非阻塞执行
使用 -v 命令来修改 log 的输出格式,以显示特定的元数据字段:
优先级:
logcat -f 命令可以将日志消息输出到指定的文件中。这里我们需要确定的一件事是 logcat 作为客户端的角色,会将通过 liblog 获得的日志信息进行格式解析、格式化处理,而 liblog 库本身并不存在保存、解析的功能。这里来对 -f 指令做一下解析:
在 _logcat() 函数中解析 -f 指令,设置日志输出文件。例如 logcat -f sdcard/log.txt ,则 context->outputFileName 赋值为 sdcard/log.txt ;
以 printBinary() 函数为例:
logcat.cpp # printBinary() :
[ 1 ] Android物语:logcat
[ 2 ] android调试——logcat详解
[ 3 ] 玩转Android10源码开发定制(12)内核篇之logcat输出内核日志
⑻ microlog4android如何将Android Log日志写到SD
我们在进行Android开发时,经常会有这种粗薯体会,由于客户的设备型号各不相同,从而导致出现多种问题,但对于研发人员,因为没有log日志文件,不太容易定位问题的具体位置。所以我们急需一个能将程序日志写到SD卡文件里的工具,类似web的log4j那样。这时microlog4android进入我们的视野,虽然它尚有不足,但也已能满足大部分需求。
使用microlog4android的步骤如下:
1、下载
到http://code.google.com/p/microlog4android/downloads/list 下载microlog4android-1.0.0.jar和microlog.properties文件。
2、建立使用logger对象
private static final Logger logger = LoggerFactory.getLogger(main.class);
3、在程序的第一个activity的oncreate方法里初始化方法
PropertyConfigurator.getConfigurator(this).configure();
4、把microlog.properties文件放到assets文件夹里
注意:assets文件夹是与res文件夹平级的。
然后更改microlog.properties文件为以下内容:
microlog.level=DEBUG microlog.appender=LogCatAppender;FileAppender microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
5、写日志记录
logger.debug("这是debug信息");
6、在AndroidManifest.xml 添加写sd卡的权限
运行程序,然后到SD卡根目录,可以发现有一个microlog.txt的'文件,里面就是我们的日志了。
更改日志问价的路径和名称
有朋友问如何更改日志文件的路径和名称,在网上找了一通的资料,没找到答案,只好到https://github.com/johanlkarlsson/microlog4android 下载源代码,经过查看源代码的PropertyConfigurator类,发现源代码里有这么蔽凳清一个配置参数microlog.appender.FileAppender.File,这样应该就可以更改日志文件的路径和名称了。
配置文件如下:
microlog.level=DEBUG microlog.appender=FileAppender;LogCatAppender microlog.appender.FileAppender.File=mylog.txt microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
运行程序,发现日志文件还是叫microlog.txt,更改名称无效,找了各种原因都无法解决,只好反编译我们之前下载的microlog4android-1.0.0.jar包,发现PropertyConfigurator这个类和刚刚从GIT下载的源代码PropertyConfigurator类不一样,microlog4android-1.0.0.jar包里的PropertyConfigurator类没有这样的一个宏前参数microlog.appender.FileAppender.File,只好把从GIT下载下来的源代码,重新打个包,暂时打成microlog4android-1.1.jar,然后重新运行程序,OK,搞定,日志文件名称变成了我们配置的mylog.txt。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!