⑴ 如何抓取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。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!