android日誌上傳
『壹』 android上如何實現後台日誌記錄並寫文件到sd卡
1.debug alarm manager 啟動的service,你想要知道是否每一次service的執行都正常,一切都是按照你所想的; 2.一些重要的信息,需要保存起來做分析或者需要上傳到伺服器做分析的; 3.開發期間,了解各個主要是網路介面的工作狀態,執行效率(每個介面的執行時間)等等;過程分析1、下載 下載下來的microlog.properties是microlog.properties.txt,修改一下後綴名) 2、建立使用logger對象 private static final Logger logger = LoggerFactory.getLogger(main.class); 3、在程序的第activit或者service的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(my debug); 6、在AndroidManifest.xml 添加寫sd卡的許可權 <uses-permission android:name=android.permission.WRITE_EXTERNAL_STORAGE / 啟動程序,然後到SD卡根目錄,可以發現有一個microlog.txt的文件,裡面就是我們記錄的日誌了。 1.上面的日誌在多地方調用,有時候可能會發現只保存了一條記錄,每次後面的日誌都覆蓋了前面的日誌,所以我們需要增加點額外代碼; 2.在第三步後面: final FileAppender fa = logger.getAppender(1); fa.setAppend(true); ok, 到此大功告成。
『貳』 android怎樣實時上傳崩潰日誌到伺服器
讓系統處理崩潰,然後把錯誤日誌上傳到伺服器並且服務只能運行2秒鍾,如果2秒鍾錯誤日誌沒有上傳到伺服器,那麼這個錯誤信息就不要了。然後再停止服務,在服務銷毀的時候同時銷毀進程。
核心代碼:
public int onStartCommand(Intent intent, int flags, int startId) { stopDelayed = intent.getLongExtra("Delayed", 2000); PackageName = intent.getStringExtra("PackageName"); expection = intent.getStringExtra("exception"); try { //這里上傳崩潰日誌 } catch (java.lang.Exception e) { e.printStackTrace(); } handler.postDelayed(new Runnable() { @Override public void run() {/* Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName); startActivity(LaunchIntent);*/ KillSelfService.this.stopSelf(); //android.os.Process.killProcess(android.os.Process.myPid()); } }, stopDelayed); return super.onStartCommand(intent, flags, startId);}
@Overridepublic void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: "); android.os.Process.killProcess(android.os.Process.myPid());}
『叄』 Android系統的系統日誌有哪幾個文件,這些文件中包含什麼內容
手機的android log(main_log、events_log、kernel_log),mainlog記錄手機android上層app以及framework相關活動的log,比如app列印的log。
eventslog主要是ActivityManager、powerManager等相關的log;Kernellog則主要是驅動相關的log。
Modem log,主要是通話相關的,比如信號強弱、連接網路等。netlog,查看網路鏈接情況,抓取網路包等。其它有data/anr 目錄下的traces/tombstones等,分析死機、重啟。
mainlog,查看應用申請什麼許可權,一般不會開放。
(3)android日誌上傳擴展閱讀:
系統日誌的價值
系統日誌策略可以在故障剛剛發生時就向你發送警告信息,系統日誌幫助你在最短的時間內發現問題。
系統日誌是一種非常關鍵的組件,因為系統日誌可以讓你充分了解自己的環境。這種系統日誌信息對於決定故障的根本原因或者縮小系統攻擊范圍來說是非常關鍵的,因為系統日誌可以讓你了解故障或者襲擊發生之前的所有事件。
為虛擬化環境制定一套良好的系統日誌策略也是至關重要的,因為系統日誌需要和許多不同的外部組件進行關聯。良好的系統日誌可以防止你從錯誤的角度分析問題,避免浪費寶貴的排錯時間。
另外一種原因是藉助於系統日誌,管理員很有可能會發現一些之前從未意識到的問題,在幾乎所有剛剛部署系統日誌的環境當中。
使用系統日誌產品當中包含的其他特性,包括向監控團隊自動發送報警通知等功能。系統日誌基於警報類型或者准確的警報消息,系統日誌可以通過觸發特定操作來完成。
系統日誌通過簡單地設定這些警報,你將會在自己的環境中處於更加主動的位置,因為你可以在事故變得更加嚴重之前得到通知。
『肆』 android測試 app 閃退 怎麼捕獲日誌
比如說,你內存有泄露的情況,比如說你發生了異常,而又沒有被處理,就會發生閃退的情況。 仔細檢查一下你的代碼。 或者做好全局的異常捕獲,及時將日誌上傳到服務端進行分析。
『伍』 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());
}
}
『陸』 天翼雲上傳日誌是什麼
通過網頁版上傳文件:第一步:登錄天翼雲,在頁面上方點擊「上傳文件」按鈕;第二步:在彈出的對話框選擇「添加文件」按鈕;第三步:在彈出文件框選擇文件,點擊「打開」按鈕即可上傳。②通過PC客戶端上傳文件:通過PC客戶端上傳文件包括四種方式:1)打開PC客戶端中的同步盤,把需要上傳的文件直接拖動到同步盤進行上傳。2)2)打開PC客戶端中的同步目錄,把需要上傳的文件直接拖動到目錄進行上傳。3)通過PC客戶端中的全部文件,把文件上傳到指定的目錄。點擊「上傳」按鈕後,選擇需要上傳的文件即可4)把需要上傳的文件拖動至懸浮窗,選擇在雲端的保存目錄後,即可上傳文件。③通過Android客戶端上傳文件:第一步:登錄Android客戶端,在文件管理右上角方點擊菜單,即可選擇「上傳文件」按鈕,第二步:在SD卡中選擇文件,點擊「確定」按鈕,文件即進入傳輸列表進行上傳。④通過iPhone客戶端上傳文件:通過iPhone客戶端上傳文件跟Android客戶端方法基本一致,但iPhone沒有SD卡,需在「照片」或「視頻」中選擇文件上傳。⑤通過iPad客戶端上傳文件:第一步:登錄iPad客戶端,在主界面下方點擊「上傳」按鈕,第二步:由於iPad沒有SD卡,需在「照片」或「視頻」中選擇文件上傳⑥WindowsPhone客戶端暫未開放上傳功能。
『柒』 android 怎麼寫文件日誌到SD卡上
android 如何寫文件日誌到SD卡上..
/**
* 寫文件到sd卡上
*
* @param context
*/
public void writeFileToSD(String context) {
//使用RandomAccessFile 寫文件 還是蠻好用的..推薦給大家使用...
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
Log.d("TestFile", "SD card is not avaiable/writeable right now.");
return;
}
try {
String pathName = "/sdcard/";
String fileName = "log.txt";
File path = new File(pathName);
File file = new File(pathName + fileName);
if (!path.exists()) {
Log.d("TestFile", "Create the path:" + pathName);
path.mkdir();
}
if (!file.exists()) {
Log.d("TestFile", "Create the file:" + fileName);
file.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(file.length());
raf.write(context.getBytes());
raf.close();
//注釋的也是寫文件..但是每次寫入都會把之前的覆蓋..
/*String pathName = "/sdcard/";
String fileName = "log.txt";
File path = new File(pathName);
File file = new File(pathName + fileName);
if (!path.exists()) {
Log.d("TestFile", "Create the path:" + pathName);
path.mkdir();
}
if (!file.exists()) {
Log.d("TestFile", "Create the file:" + fileName);
file.createNewFile();
}
FileOutputStream stream = new FileOutputStream(file);
String s = context;
byte[] buf = s.getBytes();
stream.write(buf);
stream.close();*/
} catch (Exception e) {
Log.e("TestFile", "Error on writeFilToSD.");
}
}
『捌』 安卓開發上傳文件時Log.e(TAG, "uri "= + uri);什麼意思
這個是列印log日誌,你這個是答應uri,而且你的=寫在了「」外面,TAG是個String是你標簽,隨便起,你用的是e,列印的是紅色的,為error級別,不過無所謂,我習慣開發的時候用.e,紅色看的明顯
『玖』 app上傳日誌有危險嗎
不會有危險,但是會泄露你的個人信息。
作為一個開發人員,必須具備安全意識,掌握基礎的安全知識,為打造更加安全的應用做出努力。本文淺談Android客戶端的安全問題。
涉及組件、WebView、存儲、傳輸、日誌、混淆、應用加固等安全漏洞及防護策略,運用更加合理的配置與防護措施來提高應用的安全級別。
這里提到的組件訪問許可權主要是指跨應用的進程間通信(IPC,Inter-Process Communication),開發者可以限定應用內的組件是否允許被其他應用調起。
或接收來自外部應用的數據,或者訪問我們的數據。並且必須對來自外部應用的數據做校驗處理,避免來自外部攻擊。如惡意調用組件、廣播數據攻擊、惡意訪問數據等等。
手機軟體,主要指安裝在智能手機上的軟體,完善原始系統的不足與個性化。使手機完善其功能,為用戶提供更豐富的使用體驗的主要手段。
手機軟體的運行需要有相應的手機系統,截至2017年6月1日,主要的手機系統:蘋果公司的iOS、谷歌公司的Android(安卓)系統、塞班平台和微軟平台。
2019年11月4日,工業和信息化部信息通信管理局組織召開APP侵害用戶權益行為專項整治工作啟動部署會。
將重點對違規收集用戶個人信息、違規使用用戶個人信息、不合理索取用戶許可權、為用戶賬戶注銷設置障礙四個方面的8類問題開展規范整治工作。
『拾』 如何獲得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日誌
該目錄下的日誌不會自動刪除,請及時清空,避免佔用空間