উত্তর:
লগক্লেলেক্টর একটি ভাল বিকল্প তবে আপনাকে প্রথমে এটি ইনস্টল করতে হবে।
আমি যখন মেইলের মাধ্যমে প্রেরণের জন্য লগফিল পেতে চাই, আমি সাধারণত নিম্নলিখিতগুলি করি:
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;
}
@ মেহডোক দ্বারা নির্দেশিত হিসাবে
লগগুলি পড়ার জন্য ম্যানিফেস্টে অনুমতি যুক্ত করুন
<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আরও সহজ সমাধান রয়েছে। অ্যান্ড্রয়েড 6 এ (পূর্ববর্তী সংস্করণ সম্পর্কে নিশ্চিত নয়) বিকাশকারী সরঞ্জামগুলির অধীনে একটি বিকল্প রয়েছে: বাগ রিপোর্টটি নিন
এই বিকল্পটি ক্লিক করা একটি বাগ রিপোর্ট প্রস্তুত করবে এবং ড্রাইভ করতে বা এটি ইমেলের মাধ্যমে প্রেরণে সংরক্ষণ করার অনুরোধ জানাবে।
আমি এটি লগ পাওয়ার সবচেয়ে সহজ উপায় বলে মনে করি। আমি ইউএসবি ডিবাগিং চালু করতে পছন্দ করি না।
সম্পাদনা করুন:
অভ্যন্তরীণ লগ স্মৃতিতে একটি বৃত্তাকার বাফার। প্রত্যেকটির জন্য আসলে এই ধরণের কয়েকটি বিজ্ঞপ্তি বাফার রয়েছে: রেডিও, ইভেন্টগুলি, প্রধান। ডিফল্ট মূল।
বাফারের একটি অনুলিপি পেতে, একটি কৌশলটিতে ডিভাইসে একটি কমান্ড কার্যকর করা এবং স্ট্রিং ভেরিয়েবল হিসাবে আউটপুট প্রাপ্ত করা অন্তর্ভুক্ত।
সেন্ডলগ একটি ওপেন সোর্স অ্যাপ্লিকেশন যা কেবল এটি করে: 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 সালে এটি বৈধ বিশ্বাস করি।
প্রতিটি অ্যান্ড্রয়েড ডিভাইসে বিকাশকারী বিকল্পগুলিতে লুকিয়ে থাকা একটি বাগ রিপোর্ট নেওয়ার বিকল্প রয়েছে ।
দ্রষ্টব্য: এটি পুরো সিস্টেম লগ ডাম্প করবে
কীভাবে বিকাশকারী বিকল্পগুলি সক্ষম করবেন? দেখুন: 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
ব্যবহারকারীর জন্য ধন্যবাদ 1354692 আমি এটি আরও সহজ করতে পারলাম, কেবল একটি লাইনের সাথে! তিনি যে মন্তব্য করেছেন:
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?
আমি ইমেল দ্বারা লগগুলি পুনরুদ্ধার করতে একটি ছোট গ্রন্থাগার (.aar) তৈরি করেছি। আপনি এটি Gmail অ্যাকাউন্টগুলির সাথে ব্যবহার করতে পারেন। এটি বেশ সহজ তবে কাজ করে। আপনি এখান থেকে একটি অনুলিপি পেতে পারেন
সাইটটি স্প্যানিশ ভাষায়, তবে পণ্যের বর্ণনার ইংরেজি সংস্করণ সহ একটি পিডিএফ রয়েছে।
আমি আশা করি এটি সাহায্য করতে পারে।
দুটি পদক্ষেপ:
- লগ তৈরি করুন
- লগ পাঠাতে জিমেইল লোড করুন
।
লগ তৈরি করুন
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 ধন্যবাদ জানাই
প্রথমে অ্যান্ড্রয়েড এসডিকে প্ল্যাটফর্ম-সরঞ্জামগুলিতে PATH নির্ধারণ করে adb কমান্ড কার্যকর করা যায় তা নিশ্চিত করুন:
export PATH=/Users/espireinfolabs/Desktop/soft/android-sdk-mac_x86/platform-tools:$PATH
তারপরে চালান:
adb shell logcat > log.txt
বা প্রথম এডিবি প্ল্যাটফর্ম-সরঞ্জামগুলিতে যান:
cd /Users/user/Android/Tools/android-sdk-macosx/platform-tools
তারপর চালান
./adb shell logcat > log.txt