जवाबों:
Logcollector एक अच्छा विकल्प है लेकिन आपको इसे पहले इंस्टॉल करना होगा।
जब मैं मेल द्वारा भेजने के लिए लॉगफ़ाइल प्राप्त करना चाहता हूं, तो मैं आमतौर पर निम्नलिखित कार्य करता हूं:
adb shell logcat > log.txtadb। आमतौर परC:\Users\[your username]\AppData\Local\Android\Sdk\platform-tools\
मुझे उम्मीद है कि यह कोड किसी की मदद करेगा। डिवाइस से लॉग इन करने के लिए मुझे यह पता लगाने में 2 दिन लग गए, और फिर इसे फ़िल्टर करें:
public File extractLogToFileAndWeb(){
//set a file
Date datum = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ITALY);
String fullName = df.format(datum)+"appLog.log";
File file = new File (Environment.getExternalStorageDirectory(), fullName);
//clears a file
if(file.exists()){
file.delete();
}
//write log to file
int pid = android.os.Process.myPid();
try {
String command = String.format("logcat -d -v threadtime *:*");
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder result = new StringBuilder();
String currentLine = null;
while ((currentLine = reader.readLine()) != null) {
if (currentLine != null && currentLine.contains(String.valueOf(pid))) {
result.append(currentLine);
result.append("\n");
}
}
FileWriter out = new FileWriter(file);
out.write(result.toString());
out.close();
//Runtime.getRuntime().exec("logcat -d -v time -f "+file.getAbsolutePath());
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
//clear the log
try {
Runtime.getRuntime().exec("logcat -c");
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
return file;
}
@mehdok द्वारा बताया गया
लॉग पढ़ने के लिए प्रकट करने की अनुमति जोड़ें
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_LOGS" />
मैं इस तरह के कुछ का उपयोग करेगा:
$adb logcat -d > logcat.txt
-D विकल्प पूरे सर्कुलर बफर को टेक्स्ट फाइल में डंप करता है और यदि आप किसी विशेष एक्शन / इरादे की कोशिश कर रहे हैं
$adb logcat -d | grep 'com.whatever.you.are.looking.for' -B 100 -A 100 > shorterlog.txt
उम्मीद है की यह मदद करेगा :)
उन लोगों के लिए जो यूएसबी डिबगिंग में रुचि नहीं रखते हैं या adbएक आसान उपाय है। Android 6 में (पूर्व संस्करण के बारे में निश्चित नहीं) डेवलपर टूल के तहत एक विकल्प है: टेक बग रिपोर्ट
इस विकल्प पर क्लिक करने से एक बग रिपोर्ट तैयार होगी और आपको इसे ड्राइव करने या ईमेल में भेजने के लिए सहेजने का संकेत मिलेगा।
मुझे यह लॉग्स प्राप्त करने का सबसे आसान तरीका लगता है। मुझे USB डीबगिंग चालू करना पसंद नहीं है।
संपादित करें:
आंतरिक लॉग स्मृति में एक परिपत्र बफर है। प्रत्येक के लिए वास्तव में कुछ ऐसे परिपत्र बफ़र हैं: रेडियो, ईवेंट, मुख्य। डिफ़ॉल्ट मुख्य है।
बफर की एक प्रति प्राप्त करने के लिए, एक तकनीक में डिवाइस पर एक कमांड निष्पादित करना और एक स्ट्रिंग चर के रूप में आउटपुट प्राप्त करना शामिल है।
SendLog एक ओपन सोर्स ऐप है जो सिर्फ यही करता है: http://www.l6n.org/android/sendlog.shtml
कुंजी logcatएम्बेडेड ओएस में डिवाइस पर चलाने के लिए है। यह उतना मुश्किल नहीं है जितना लगता है, बस लिंक में ओपन सोर्स ऐप देखें।
अक्सर मुझे त्रुटि मिलती है " logcat read: Invalid argument"। लॉग से पढ़ने से पहले मुझे लॉग को साफ़ करना था।
मुझे यह पसंद है:
prompt> cd ~/Desktop
prompt> adb logcat -c
prompt> adb logcat | tee log.txt
एक सरल तरीका यह है कि आप अपने लॉग कलेक्टर तरीके या यहां तक कि बाजार से केवल एक मौजूदा लॉग कलेक्टर ऐप बना सकते हैं।
अपने ऐप्स के लिए मैंने एक रिपोर्ट कार्यक्षमता बनाई जो लॉग को मेरे ईमेल (या यहां तक कि किसी अन्य स्थान पर भेजती है - एक बार जब आप लॉग प्राप्त कर लेते हैं तो आप यह कर सकते हैं कि आप इसके साथ चाहते हैं)।
डिवाइस से लॉग फ़ाइल कैसे प्राप्त करें, इस बारे में एक सरल उदाहरण है:
अपने टर्मिनल पर आउटपुट प्राप्त करने के लिए सिंपल बस निम्न कमांड चलाएं:
adb shell logcat
मुझे पता है कि यह एक पुराना सवाल है, लेकिन मेरा मानना है कि 2018 में भी मान्य है।
हर Android डिवाइस में डेवलपर विकल्पों में छिपी बग रिपोर्ट लेने का विकल्प होता है।
नोट: यह संपूर्ण सिस्टम लॉग को डंप करेगा
डेवलपर विकल्प कैसे सक्षम करें? देखें: https://developer.android.com/studio/debug/dev-options
मेरे लिए क्या काम करता है:
इसे कैसे पढ़ें? खुला बग्रेपोर्ट-1960-01-01-hh-mm-ss.txt
आप शायद कुछ इस तरह देखना चाहते हैं:
------ SYSTEM LOG (logcat -v threadtime -v printable -d *:v) ------
--------- beginning of crash
06-13 14:37:36.542 19294 19294 E AndroidRuntime: FATAL EXCEPTION: main
या:
------ SYSTEM LOG (logcat -v threadtime -v printable -d *:v) ------
--------- beginning of main
User1354692 के लिए धन्यवाद मैं इसे और अधिक आसान बना सकता था, केवल एक लाइन के साथ! उन्होंने जो टिप्पणी की है:
try {
File file = new File(Environment.getExternalStorageDirectory(), String.valueOf(System.currentTimeMillis()));
Runtime.getRuntime().exec("logcat -d -v time -f " + file.getAbsolutePath());}catch (IOException e){}
OnCreate?
मैंने ईमेल द्वारा लॉग को पुनः प्राप्त करने के लिए एक छोटा पुस्तकालय (.AR) बनाया है। आप इसका उपयोग जीमेल खातों के साथ कर सकते हैं। यह बहुत आसान है लेकिन काम करता है। आप यहाँ से एक प्रति प्राप्त कर सकते हैं
साइट स्पैनिश में है, लेकिन उत्पाद विवरण के अंग्रेजी संस्करण के साथ एक पीडीएफ है।
मुझे उम्मीद है कि यह मदद कर सकता है।
दो चरण:
- लॉग जनरेट करें
- लॉग भेजने के लिए जीमेल लोड करें
।
लॉग जनरेट करें
File generateLog() {
File logFolder = new File(Environment.getExternalStorageDirectory(), "MyFolder");
if (!logFolder.exists()) {
logFolder.mkdir();
}
String filename = "myapp_log_" + new Date().getTime() + ".log";
File logFile = new File(logFolder, filename);
try {
String[] cmd = new String[] { "logcat", "-f", logFile.getAbsolutePath(), "-v", "time", "ActivityManager:W", "myapp:D" };
Runtime.getRuntime().exec(cmd);
Toaster.shortDebug("Log generated to: " + filename);
return logFile;
}
catch (IOException ioEx) {
ioEx.printStackTrace();
}
return null;
}लॉग भेजने के लिए जीमेल लोड करें
File logFile = generateLog();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(logFile));
intent.setType("multipart/");
startActivity(intent);# 1 के लिए संदर्भ
~~
# 2 के लिए - लॉग फ़ाइल को देखने और भेजने के लिए कैसे लोड करने के लिए कई अलग-अलग उत्तर हैं। अंत में, यहाँ समाधान वास्तव में दोनों के लिए काम किया:
- एक विकल्प के रूप में जीमेल लोड करें
- फ़ाइल को सफलतापूर्वक संलग्न करता है
सही ढंग से काम करने के जवाब के लिए https://stackoverflow.com/a/22367055/2162226 पर बड़ा धन्यवाद
पहले सुनिश्चित करें कि एडीबी कमांड पीटीएच को एंड्रॉइड एसडीके प्लेटफॉर्म-टूल्स पर सेट करके निष्पादन योग्य है:
export PATH=/Users/espireinfolabs/Desktop/soft/android-sdk-mac_x86/platform-tools:$PATH
फिर भागो:
adb shell logcat > log.txt
या सबसे पहले adb प्लेटफ़ॉर्म-टूल्स पर जाएँ:
cd /Users/user/Android/Tools/android-sdk-macosx/platform-tools
फिर भागो
./adb shell logcat > log.txt