অ্যান্ড্রয়েডে আমার অ্যাপ্লিকেশন থেকে কেবলমাত্র বার্তাগুলি পেতে লগগিটার ফিল্টার করবেন?


340

আমি পর্যবেক্ষণ করেছি যে আমি যখন অ্যান্ড্রয়েডের জন্য এডিটি সহ একলাসের সাথে লগক্যাট ব্যবহার করি তখন আমি অন্যান্য অনেক অ্যাপ্লিকেশন থেকে বার্তা পাই। এটি ফিল্টার করার জন্য এবং কেবলমাত্র আমার নিজের অ্যাপ্লিকেশন থেকে কেবলমাত্র বার্তাগুলি দেখানোর কোনও উপায় আছে?


1
সমস্ত উত্তর অ্যাপটি থেকে ডিবাগ হওয়া বার্তাগুলির জন্য ফিল্টারিংয়ের পরামর্শ দেয়। এমনকি এই ফিল্টারগুলি চালু থাকা সত্ত্বেও, অন্যান্য অ্যাপ্লিকেশনগুলির লগক্যাট স্প্যাম শীঘ্রই লগ বাফারটিকে যত বড় হোক তা পূরণ করে। Eclipse কে এই বার্তাগুলি আদৌ সংগ্রহ না করার বা পর্যায়ক্রমে সেগুলি মুছে ফেলার জন্য বলার কোনও উপায় আছে কি?
দাম

উত্তর:


267

প্যাকেজের নামগুলি অনন্য হওয়ার গ্যারান্টিযুক্ত যাতে আপনি ট্যাগটি দিয়ে আপনার প্যাকেজটির নাম হিসাবে ফাংশনটি ব্যবহারLog করতে পারেন এবং তারপরে প্যাকেজের নামে ফিল্টার করতে পারেন :

দ্রষ্টব্য: বিল্ড সরঞ্জামগুলি 21.0.3 অনুসারে এটি আর কাজ করবে না কারণ TAGS ২৩ টি অক্ষর বা তার চেয়ে কম সীমাবদ্ধ রয়েছে।

Log.<log level>("<your package name>", "message");

adb -d logcat <your package name>:<log level> *:S

-dএকটি আসল ডিভাইস -eবোঝায় এবং একটি এমুলেটরকে বোঝায়। যদি 1 টির বেশি এমুলেটর চলছে তবে আপনি ব্যবহার করতে পারেন -s emulator-<emulator number>(যেমন, -s emulator-5558)

উদাহরণ: adb -d logcat com.example.example:I *:S

অথবা আপনি যদি System.out.printলগটিতে বার্তা প্রেরণ করতে ব্যবহার করছেন তবে adb -d logcat System.out:I *:Sআপনি কেবলমাত্র System.out এ কল প্রদর্শন করতে পারবেন ।

আপনি সমস্ত লগ স্তর এবং আরও তথ্য এখানে পেতে পারেন: https://developer.android.com/studio/command-line/logcat.html

http://developer.android.com/reference/android/util/Log.html

সম্পাদনা: দেখে মনে হচ্ছে যে আমি বন্দুকটি কিছুটা লাফিয়েছি এবং ঠিক বুঝতে পেরেছি আপনি গ্রহনে লগক্যাট সম্পর্কে জিজ্ঞাসা করছেন। আমি উপরে যা পোস্ট করেছি তা হ'ল কমান্ড লাইন থেকে অ্যাডবির মাধ্যমে লগক্যাট ব্যবহার করার জন্য। আমি নিশ্চিত নই যে একই ফিল্টারগুলি Eclipse এ স্থানান্তরিত হবে কিনা।


10
আমি জানি প্রশ্নটি গ্রহনের বিষয়ে ছিল, তবে আমি কমান্ড লাইনের প্রেমে পড়েছি এবং সর্বদা লগকটের জন্যও এটি ব্যবহার করি। Jsharkey.org/blog/2009/04/22/… যেমন আউটপুটটি রঙ করার জন্য কিছু সরঞ্জাম ব্যবহার করুন এটি আরও দরকারী করে তোলে
ফ্রান্সিসকো জর্দানো

1
এমুলেটরটিতে পরীক্ষা করা: যখন আমি অ্যাডবি-ল লগ্যাট com.example.example: আমি *: এস, অ্যাডবি-ডি লগক্যাট সিস্টেম.আউট: আই *: এস কাজ করি তখন এটি আমার জন্য আটকে যায়।
কোড

1
@ শুভ মানে কি আটকা পড়েছে? আমি এটি প্রায় এক বছর আগে পোস্ট করেছি যাতে লগক্যাটের কিছু তখন থেকে পরিবর্তিত হতে পারে।
শানেত

58
এই পদ্ধতিটি অ্যাপ দ্বারা নয়, ট্যাগ দ্বারা ফিল্টার করে। টমের পদ্ধতি অ্যাপ্লিকেশন অনুসারে ফিল্টার করে
জোনাস আলভেস

17
logcat <your package name>:<log level>উত্তরটি ব্যবহার করে পরামর্শ দেয় যে প্যাকেজের নামটি বৈধ ফিল্টার হিসাবে ব্যবহার করা সম্ভব। আমি তাই আমি কেবল ভালো কিছু করার জন্য প্রথম লাইন পরিবর্তন করার পরামর্শ দিই, বোঝা এটি আসলে কি বলছে দুইবার উত্তর পড়া প্রয়োজন " logcat <tag>:<log level>যেখানে <tag>আপনার প্যাকেজের নাম যদি ট্যাগে যেমন ব্যবহার করা যেতে পারে android.util.Log"
ফ্লো

368

লিনাক্স এবং ওএস এক্স

পিআইডি দখল করতে পিএস / গ্রেপ / কাট ব্যবহার করুন, তারপরে সেই পিআইডি সহ লগক্যাট প্রবেশের জন্য গ্রেপ করুন। আমি যে আদেশটি ব্যবহার করি তা এখানে:

adb logcat | grep -F "`adb shell ps | grep com.asanayoga.asanarebel  | tr -s [:space:] ' ' | cut -d' ' -f2`"

(একই সংখ্যা সম্বলিত সম্পর্কযুক্ত লগ লাইনগুলির তাত্ত্বিক সমস্যা এড়াতে আপনি আরও রেগেক্সকে উন্নত করতে পারেন তবে এটি আমার পক্ষে কখনও সমস্যা হয়নি)

এটি একাধিক প্রক্রিয়ার সাথে মিলে গেলেও কাজ করে।

উইন্ডোজ

উইন্ডোজ এ আপনি করতে পারেন:

adb logcat | findstr com.example.package

2
@ বিটিআরনাইদু: আপনি সাইগউইন ইনস্টল করতে পারেন বা গিট-ব্যাশ (উইন্ডোগুলির জন্য ব্যাশ) ব্যবহার করতে পারেন
ফিলিপ

1
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
বিশালকালে

1
স্মৃতি টাইমস জিসি ফ্রি মেমরির সময় কোনও প্রক্রিয়ার পিড নম্বর সহ একই নম্বরটি মুদ্রণ করে। এখানে অন্য সংস্করণটি রয়েছেadb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
আলিজান্দ্রো

14
উইন্ডোজ এ আপনি করতে পারেন:adb logcat | findstr com.example.package
jj_

8
আপনার উত্তরে সামান্য পরিবর্তন। আমি পরামর্শ দেব:adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`

59

অ্যান্ড্রয়েড .0.০, লগকটে --pid ফিল্টার বিকল্প রয়েছে এবং পিডোফ কমান্ড উপলব্ধ রয়েছে, আপনার প্যাকেজের নামে com.example.app প্রতিস্থাপন করুন।
(উবুন্টু টার্মিনাল / অ্যান্ড্রয়েড .0.০ থেকে)

adb logcat --pid=`adb shell pidof -s com.example.app`

অথবা

adb logcat --pid=$(adb shell pidof -s com.example.app)

পিডোফ কমান্ড সম্পর্কে আরও তথ্যের জন্য:
https://stackoverflow.com/a/15622698/7651532


2
আমি সমস্ত grepএবং findstrবিকল্পগুলি চেষ্টা করেছিলাম , তবে সেগুলি কেবলমাত্র প্রচুর বার্তা বাদ দিয়ে কিছু মান সহ লগগুলি ফিল্টার করছে। আপনার উত্তরটি আসলটি, অন্য লাইব্রেরি থেকে লগ বার্তা বাদ না দিয়ে অ্যাপ সম্পর্কে সমস্ত লগ প্রদর্শন করুন। এটি অ্যান্ড্রয়েড স্টুডিওর বর্তমান 'কেবল নির্বাচিত দেখান' ফিল্টারের মতো। ধন্যবাদ!
সমতুল্য

"Com.example.app" প্রক্রিয়া চলাকালীন এই 2 টি কমান্ড কাজ করে। তবে, প্রক্রিয়াটি চালু না থাকলে ত্রুটি বার্তাগুলি প্রদর্শিত হবে। আশ্চর্য এড়াতে কেবল একটি পার্শ্ব নোট।
জোনাথনজ

53

ফিল্টার যুক্ত করুন

ফিল্টার যুক্ত করুন

নাম উল্লেখ করুন

এখানে চিত্র বর্ণনা লিখুন

আপনার ফিল্টার চয়ন করুন।

এখানে চিত্র বর্ণনা লিখুন


3
আপনি বিকাশের সরঞ্জামগুলি ডিজাইন করার সময় এটি সুনির্দিষ্ট হওয়া বেশ গুরুত্বপূর্ণ, যেহেতু এটি ব্যবহারকারী দ্বারা সুনির্দিষ্ট হওয়ার প্রত্যাশা রয়েছে। এটি প্যাকেজের নাম, আবেদনের নাম নয়। > :(
হেনরিক এরল্যান্ডসন

19

আমার Terminal
জন্য এটি ম্যাক গোটে ফোল্ডারে কাজ করে যেখানে আপনি adbটার্মিনালে নীচে কমান্ড টাইপ করেছেন

./adb logcat MyTAG:V AndroidRuntime:E *:S

এখানে এটি সমস্ত লগ MyTAGএবং ফিল্টার করবেAndroidRuntime


2
1) জাভা কোড: Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");2) অ্যান্ড্রয়েডে লগইন করতে DEBUG $ adb -s RKSCWSOV5SAIEUSC shell;3) $ logcat MyTAG:V AndroidRuntime:E *:S 4) এখন এটি আমার TAG এর ভার্বোস এবং অ্যান্ড্রয়েডের

1
এটিই ম্যাকস-এ আমার জন্য কাজ করা একমাত্র উত্তর। দারূন কাজ.
ওম-হা

1
@ ওহ-হ্যাঁ ধন্যবাদ, আমি অনেক আগে স্টুডিও ব্যবহার করেছি এবং জানতাম না যে এটির এখনও বিষয়টি রয়েছে
ইন্দার কুমার রাঠোর

1
আসলে আমি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছি না। আমি ফ্লটার, অ্যান্ড্রয়েড এসডিকে এবং গ্রেডল ব্যবহার করছি। সম্পাদক হিসাবে, ভিএস কোড। সুতরাং এটি আমার অ্যান্ড্রয়েড ফোনে কী চলছে তা জানার একটি দুর্দান্ত উপায়
ওম-হা

13

17 মে আপডেট

এটি কয়েক বছর হয়ে গেছে, এবং জিনিসটির পরিবর্তন হয়েছে। এবং Eclipse আর সরকারীভাবে সমর্থিত নয়। সুতরাং এখানে আরও দুটি আপ-টু-ডেট পদ্ধতি রয়েছে:

1. অ্যান্ড্রয়েড স্টুডিও

এখানে চিত্র বর্ণনা লিখুন ইন Android monitorটুলবক্স, আপনি Logcat প্রতি ফিল্টার করতে পারেন debuggable process। সাধারণত, আপনি যখন কোনও অ্যাপ্লিকেশন বিকাশ করেন এটি একটি ডিবাগযোগ্য প্রক্রিয়া। প্রতি একবারে একবারে আমি এই নিয়ে সমস্যায় পড়ছি এবং নিম্নলিখিতটি একটি করুন:

  1. Tools-> Android-> Enable ADB Integration
    যদি এটি ইতিমধ্যে সক্ষম করা থাকে তবে তা টগল করুন এবং তারপরে আবার চালু করুন

  2. আপনার মোবাইল ডিভাইসটি আনপ্লাগ এবং পুনরায় প্লাগ করুন।

রেগেক্স এবং ডিবাগ স্তরের মাধ্যমে ফিল্টার করার বিকল্পগুলিও রয়েছে

2। লগক্যাট-রঙ

adb logcatআপনি যদি টার্মিনাল ভিত্তিক সমাধান ব্যবহার করতে চান তবে এটি শীর্ষে একটি অজগর র‍্যাপার । এটি সম্পর্কে ভাল জিনিস আপনি একাধিক কনফিগারেশন সংরক্ষণ করতে পারেন এবং কেবল সেগুলি পুনরায় ব্যবহার করতে পারেন। দ্বারা ফিল্টারিংtags বেশ নির্ভরযোগ্য। আপনি packageকেবল এক বা একাধিক অ্যাপের লগগুলি দেখতেও ফিল্টার করতে পারেন, তবে আপনি logcat-colorনিজের অ্যাপ্লিকেশন চালু করার আগেই শুরু করতে পারেন।

পুরানো উত্তর:

দেখে মনে হচ্ছে আমি আগের উত্তরগুলিতে মন্তব্য করতে পারি না, তাই আমি একটি নতুন পোস্ট করব। এটি টম মুলকারির উত্তরের একটি মন্তব্য , এটি দেখায় যে বেশিরভাগ ডিভাইসে কাজ করার জন্য কমান্ডটি কীভাবে পরিবর্তন করা উচিত shouldadb shell ps পিআইডি কলাম পরিবর্তনশীল।

দ্রষ্টব্য: নীচের কমান্ডটি সেই ক্ষেত্রে কাজ করে যেখানে আপনি অনেকগুলি ডিভাইস সংযুক্ত করেছেন। তাই device idপ্রয়োজন। অন্যথায়, আপনি কেবল বন্ধনী '[', ']' বাদ দিতে পারেন

1. পিডের কলামটি জানতে, টাইপ করুন:

adb [-s DEVICE_ID] shell ps | head -n 1

এখন পিআইডি-র জন্য কলাম নম্বর মুখস্থ করুন। নম্বরটি শুরু হয়1

2. তারপর নিম্নলিখিত টাইপ করুন:

adb [-s DEVICE_ID] logcat | grep $(adb [-s DEVICE_ID] shell ps \
| grep "com.example" | awk -F" " ' {print $PUT_COLUMN_HERE}')

আপনি কলামটি মুখস্ত করে রেখেছিলেন কেবল PUT_COLUMN_HERE , যেমন$5

বিচারকার্য স্থগিত রাখার আদেশ

প্রতিবার আপনি যখন আপনার অ্যাপ্লিকেশনটি পুনরায় রান করবেন তখন আপনাকে দ্বিতীয় কমান্ডটি আবার চালাতে হবে, কারণ অ্যাপ্লিকেশনটি ওএস থেকে একটি নতুন পিআইডি পায়।


এই অ্যাপ্লিকেশনগুলির জন্য লগ পেতে কেবল আপনাকে করতে হবে এই সমস্ত জিনিসগুলি দেখুন, অন্য অ্যাপ্লিকেশন নয়। এছাড়াও, আমি সত্যিই এটি হাস্যকর মনে করি যে অন্যান্য লোকেরা অন্য ব্যক্তির লগগুলি দেখতে পারে। আপনি কি আমাকে বলছেন যে গুগল এটি সম্পর্কে কিছুই করতে পারে না? শুধু নিশ্চিত হয়ে নিন যে আমার লগগুলি অন্য লোকেরা না দেখে এবং আমার লগক্যাটটি পরিষ্কার রাখছে?
টাটিওভারফ্লো

10

এটি আমার জন্য গিট ব্যাশে কাজ করছে:

$ pid=$(adb shell ps | grep <package name> | cut -c11-15) ; adb logcat | grep $pid

এটি কি অ্যান্ড্রয়েড কোডে ব্যবহার করা সম্ভব?
নিকো 1312

9

এটি applog.sh এ রাখুন

#!/bin/sh
PACKAGE=$1
APPPID=`adb -d shell ps | grep "${PACKAGE}" | cut -c10-15 | sed -e 's/ //g'`
adb -d logcat -v long \
 | tr -d '\r' | sed -e '/^\[.*\]/ {N; s/\n/ /}' | grep -v '^$' \
 | grep " ${APPPID}:"

তারপর: applog.sh com.example.my.package


মাল্টলাইন লগগুলি ক্যাপচারের জন্য এখানে ফিল্টারটির বিভিন্নতা রয়েছে (যদি আপনি log.d("TAG", "multine\nlog")উদাহরণস্বরূপ করেছেন): adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'- আমি trউইন্ডোজ সিস্টেমে এটির প্রয়োজনীয়তা ধরে নিচ্ছি এবং আমি APPIDমাল্টিটপল পিডগুলি অনুমতি দিয়ে বন্ধনীতে আবৃত করেছি (এর দ্বারা পৃথক |) ।
লোগান পিকআপ

9

এটি ইউএসবি ডিবাগিংয়ের সাথে আমার জন্য কাজ করে:

  1. ডিভাইসটি সংযুক্ত করুন এবং ব্যবহার করুন:

    adb shell

  2. সংযুক্ত থাকাকালীন লগক্যাটটি ব্যবহার করুন:

    logcat | grep com.yourapp.packagename


7

আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছেন তবে আপনি যে প্রক্রিয়া থেকে লগক্যাট পেতে চান তা নির্বাচন করতে পারেন। এখানে স্ক্রিনশট।

এখানে চিত্র বর্ণনা লিখুন


1
অ্যান্ড্রয়েড স্টুডিওর ভার 0.4.5 থেকে আপনি কেবল চলমান অ্যাপ্লিকেশন থেকে বার্তা পাবেন। Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
dmSherazi

7

আমি প্যাকেজ নাম দ্বারা লগক্যাট ফিল্টার করার জন্য একটি শেল স্ক্রিপ্ট লিখেছিলাম, যা আমি মনে করি ব্যবহারের চেয়ে নির্ভরযোগ্য

ps | grep com.example.package | cut -c10-15

প্রকৃত পিডটি সনাক্ত করতে এটি / proc / $ pid / cmdline ব্যবহার করে, তারপরে লগক্যাটে একটি গ্রেপ করুন

https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a


7

উবুন্টু: অ্যাডবি লগক্যাট-বি অল-ভি রঙ - পিড = `অ্যাডবি শেল পিডোফ-এস com.packagename- রঙ এবং অ্যাপের ক্রমাগত লগ সহ


adb shell pidof ...বিট তাই আমি আমার জন্য কাজ করে নি adb shellডিভাইসের মধ্যে ed এবং দৌড়ে topআমার অ্যাপের জন্য PID, অনুলিপি এবং এরপরে আপনার আদেশ এটা প্রতিস্থাপিত
edzillion

pgrepপিডোফের পরিবর্তে চেষ্টা করুন
লেনোনার্ড সিলভা

এটি ওএসএক্সে আমার জন্য কাজ করে, -v রঙের জন্য অতিরিক্ত পয়েন্টগুলি
Mars

6

Eclipse এর জন্য ADT v15 আপনাকে একটি অ্যাপ্লিকেশন নাম নির্দিষ্ট করতে দেয় (এটি আসলে আপনার androidmanifest.xML এ প্যাকেজ মান)।

আমি অ্যাপ্লিকেশন দ্বারা ফিল্টার করতে সক্ষম হওয়া পছন্দ করি তবে নতুন লগক্যাটটিতে অটস্ক্রোল সহ একটি বাগ রয়েছে। পূর্ববর্তী লগগুলি দেখার জন্য আপনি যখন কিছুটা উপরে স্ক্রোল করেন, তখন এটি স্বয়ংক্রিয়ভাবে কয়েক সেকেন্ডের মধ্যে নীচে ফিরে যায়। মনে হচ্ছে লগটি আপ করার জন্য 1/2 স্ক্রোলিংয়ের ফলে এটি নীচে থেকে পিছনে ঝাঁপ দেওয়া থেকে রক্ষা পায় না, তবে এটি প্রায়শই অকেজো।

সম্পাদনা: আমি কমান্ড-লাইন থেকে একটি অ্যাপ ফিল্টার নির্দিষ্ট করার চেষ্টা করেছি - তবে কোনও ভাগ্য নেই। যদি কেউ এটি বের করে দেয় বা কীভাবে অটোস্ক্রোল বন্ধ করে দেয় তবে দয়া করে আমাকে জানান।


6

ব্যবহার উইন্ডোজ প্রম্পট COMMAND: adb logcat -d | findstr <package>

* এটি প্রথম জেজে_ দ্বারা উল্লেখ করা হয়েছিল , তবে মন্তব্যগুলিতে এটি পেতে আমার বয়স হয়েছিল ...


4

বৈকল্পিক হিসাবে আপনি তৃতীয় পক্ষের স্ক্রিপ্ট পিআইডি বিড়াল দ্বারা জ্যাক ওয়ার্টন ব্যবহার করতে পারেন । এই স্ক্রিপ্টটির দুটি প্রধান সুবিধা রয়েছে:

  • একটি নির্দিষ্ট অ্যাপ্লিকেশন প্যাকেজ থেকে প্রক্রিয়াগুলির জন্য লগ এন্ট্রিগুলি দেখায়
  • রঙ লগক্যাট

ডকুমেন্টেশন থেকে:

অ্যাপ্লিকেশন বিকাশের সময় আপনি প্রায়শই কেবল আপনার অ্যাপ থেকে আগত লগ বার্তা প্রদর্শন করতে চান। দুর্ভাগ্যক্রমে, যেহেতু আপনি যখন ফোনে মোতায়েন করবেন তখনই প্রক্রিয়া আইডি পরিবর্তিত হয় কারণ এটি সঠিক জিনিসটির জন্য গ্রেপ করা একটি চ্যালেঞ্জ হয়ে উঠেছে।

এই স্ক্রিপ্টটি অ্যাপ্লিকেশন প্যাকেজ দ্বারা ফিল্টার করে সমস্যাটি সমাধান করে।

একটি আউটপুট মত দেখাচ্ছে এখানে চিত্র বর্ণনা লিখুন


2

আমি নিশ্চিত নই যে কেবলমাত্র আপনার অ্যাপ্লিকেশন সম্পর্কিত সিস্টেম বার্তাগুলি দেখার একটি উপায় আছে তবে আপনি কোনও স্ট্রিংয়ের উপর ভিত্তি করে ফিল্টার করতে পারেন। আপনি যদি প্রোগ্রামটির মধ্যে কোনও লগ করছেন, আপনি কেবলমাত্র একটি নির্দিষ্ট অনন্য কীওয়ার্ড এবং সেই শব্দটির উপর ভিত্তি করে ফিল্টার করতে পারেন।


2

চেষ্টা করুন: উইন্ডো -> পছন্দসমূহ -> অ্যান্ড্রয়েড -> লগগ্যাট। ক্ষেত্র পরিবর্তন করুন "যদি লগক্যাট ভিউ দেখান ..." মান "VERBOSE"। এটা আমাকে সাহায্য করেছে।


2

আপনি যদি Eclipse ব্যবহার করছেন তবে নীচের লগগ্যাট উইন্ডোতে সবুজ + সাইন টিপুন এবং অ্যাপ্লিকেশন নাম বাক্সে আপনার প্যাকেজের নাম (com.example.yourappname) রাখুন । এছাড়াও, ফিল্টার নাম বাক্সে আপনার পক্ষে আরামদায়ক কোনও নাম চয়ন করুন এবং ঠিক আছে ক্লিক করুন। আপনি কেবলমাত্র যুক্ত ফিল্টারটি লগগেটের বাম ফলক থেকে বেছে নেওয়া হলে আপনি কেবলমাত্র আপনার অ্যাপ্লিকেশন সম্পর্কিত বার্তা দেখতে পাবেন।


2

আপনার লগ একটি নাম দিন। আমি আমার "ওয়াওয়া" ডাকলাম।

এখানে চিত্র বর্ণনা লিখুন

অ্যান্ড্রয়েড স্টুডিওতে, অ্যান্ড্রয়েড-> ফিল্টার কনফিগারেশন সম্পাদনা করুন

এখানে চিত্র বর্ণনা লিখুন

তারপরে আপনি লগগুলি দিয়েছিলেন সেই নামটি টাইপ করুন। আমার ক্ষেত্রে এটি "ওয়াওয়া" বলা হয়। আপনি যে ধরনের ফিল্টার করতে পারেন তার কয়েকটি উদাহরণ এখানে। আপনি System.out, System.err, লগ বা প্যাকেজের নাম দ্বারা ফিল্টার করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


2

এটি সম্ভবত সবচেয়ে সহজ সমাধান।

টম মুলকাহির সমাধানের শীর্ষে আপনি নীচের মত আরও সহজ করে তুলতে পারেন:

alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

সাধারণ عرف হিসাবে ব্যবহার সহজ। আপনার শেলটিতে কেবল কমান্ডটি টাইপ করুন:

logcat

ওরফে সেটআপটি এটিকে সহজ করে তোলে। এবং রেজেক্স আপনাকে কেবলমাত্র মূল প্রক্রিয়া সম্পর্কেই যত্নশীল বলে ধরে নিয়ে একাধিক প্রক্রিয়া অ্যাপ্লিকেশনগুলির জন্য এটি শক্তিশালী করে তোলে।

কোজ হিসাবে আপনি প্রতিটি প্রক্রিয়াটির জন্য আপনার পছন্দ মতো আরও উপাত্ত সেট করতে পারেন। বা হেগাজির দ্রবণটি ব্যবহার করুন। :)

উপরন্তু, আপনি লগিং স্তর নির্ধারণ করতে চান, এটি হয়

alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`"

2

উইন্ডোজ 10-এ, আয়নিক ব্যবহার করে, আমার জন্য যা দুর্দান্ত কাজ করেছে তা হ'ল সমস্ত অ্যাপ্লিকেশন বার্তাগুলির দ্বারা উত্পন্ন "INFO: CONSOLE" এর সাথে 'ফাইন্ডস্টার' comb সুতরাং, কমান্ড লাইনে আমার কমান্ডটি হ'ল:

adb logcat | findstr INFO:CONSOLE

1

আমি টম মুলকাহির উত্তরটি ব্যবহার করার চেষ্টা করেছি কিন্তু দুর্ভাগ্যক্রমে এটি একাধিক প্রক্রিয়া সহ অ্যাপ্লিকেশনগুলির জন্য কাজ করছে না তাই আমি আমার প্রয়োজন অনুসারে এটি সম্পাদনা করি।

#!/bin/bash
if [ "$#" -ne 1 ]; then echo "Illegal number of parameters"; exit 1; fi
echo "Lof for package name: $1"
PROCESSES=`adb shell ps | grep "$1" | cut -c10-15`
NUM_OF_PROCESSES=`echo "$PROCESSES" | wc -l`
if [ $NUM_OF_PROCESSES -eq 0 ]; then echo "The application is not running!"; exit 1; fi
COUNTER=1
for process in $PROCESSES; do
        if [ $COUNTER -eq 1 ]; then GREP_TEXT="("; fi
        GREP_TEXT+=$process
        if [ $COUNTER -eq $NUM_OF_PROCESSES ]; then GREP_TEXT+=")"; else GREP_TEXT+="|"; fi
        let COUNTER=COUNTER+1 
        if [ $COUNTER -gt $NUM_OF_PROCESSES ]; then break; fi  
done
adb logcat | grep -E "$GREP_TEXT"

1

ব্যবহার করুন -s!

আপনার নিজের ট্যাগটি ব্যবহার করা উচিত: এখানে দেখুন: http://developer.android.com/references/android/util/Log.html

ভালো লেগেছে।

Log.d("AlexeysActivity","what you want to log");

এবং তারপরে আপনি যখন লগ ব্যবহার করতে চান>

adb logcat -s AlexeysActivity

যা একই ট্যাগ ব্যবহার করে না এমন সমস্ত ফিল্টার আউট করে।

সূত্র


1
আপনি কোডটি লিখছেন তা ধরে নিবেন না। আপনি গ্রন্থাগারগুলির বার্তাগুলি সম্পর্কে যত্নশীল হতে পারেন এবং আপনি লগের স্ট্রিংগুলি পরিবর্তন করতে পারবেন না।
জেমস মুর

1

টম মুলকাহির জবাব ছাড়াও , যদি আপনি উইন্ডোজ কনসোলে পিআইডি দ্বারা ফিল্টার করতে চান তবে আপনি এর মতো একটি ছোট ব্যাচ ফাইল তৈরি করতে পারেন:

@ECHO OFF

:: find the process id of our app (2nd token)
FOR /F "tokens=1-2" %%A IN ('adb shell ps ^| findstr com.example.my.package') DO SET PID=%%B

:: run logcat and filter the output by PID
adb logcat | findstr %PID%

1

এই স্পষ্টত একটি প্রশ্ন থেকে Logcat ব্যবহার যার লক্ষ্য হলো বাহিরে ডেভেলপার ডিভাইসের অবশ্য যদি তোমরা Logcat আউটপুট প্রদর্শন করাতে চান উপর ডিভাইস (প্রোগ্রামেটিক্যালি), আপনি শুধু এই প্রয়োজন:

Runtime.getRuntime().exec("logcat " + android.os.Process.myPid() + " *:D");

দ্য *:Dশেষে ডিবাগ লগ স্তরের নিচে যে বার্তা ফিল্টার কিন্তু আপনি যে চলে যাবে।

টেক্সটভিউতে আউটপুটটি নির্দেশ করতে এখানে উদাহরণস্বরূপ দেখুন ।


0

এখন ট্যাগ টাইপ করা সম্ভব: নেমফেটেগ বা অ্যাপ্লিকেশন: সংরক্ষিত ফিল্টার বারে নতুন ফিল্টার যোগ না করেই ফিল্টার করতে নেমফথইপ


0

IntelliJ (এবং সম্ভবত অন্ধকার এছাড়াও মধ্যে) আপনি টেক্সট দ্বারা Logcat আউটপুট ফিল্টার করতে পারেন WebView , তাই এটি ছাপে মূলত সবকিছু phonegap উত্পাদক হয়


0

applog.shএকাধিক প্রক্রিয়া সহ বেশ কয়েকটি ডিভাইস এবং অ্যাপ্লিকেশনগুলির সমর্থন সহ গ্যাভরিলের আরও একটি রূপ :

#!/bin/sh
PKG=$1
shift

APPIDS=`adb $@ shell ps | awk -v PKG="$PKG" '
    (NR == 1){appcolumn=2; for (i=1; i<=NF; i++) if ($i=="PID") {appcolumn=i}}
    index($0,PKG){print $(appcolumn)}' | paste -d \| -s`

echo "PID's: $APPIDS"
adb $@ logcat -v color | awk  "(\$3 ~ /$APPIDS/){print \$0}"

ব্যবহার: applog.sh com.example.my.package [-s <specific device>]


-1

লিনাক্সে, এটি আমার পক্ষে কাজ করেছে:

adb logcat | grep `adb shell ps | grep your.package | awk '{print $2}'`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.