OpenThread লগগুলি অসংখ্য কম্পাইল-টাইম কনফিগারেশন ধ্রুবক দ্বারা নিয়ন্ত্রিত হয়। অন্যথায় উল্লেখ করা না থাকলে, এই ধ্রুবকগুলি নিম্নলিখিত ফাইলে সংজ্ঞায়িত করা হয়েছে:
openthread/src/core/config/logging.h
আউটপুট পদ্ধতি
OpenThread বিভিন্ন আউটপুট লগিং পদ্ধতি সমর্থন করে, OPENTHREAD_CONFIG_LOG_OUTPUT
এর কম্পাইল-টাইম কনফিগারেশন ধ্রুবক হিসাবে সংজ্ঞায়িত। লগিং পদ্ধতির বিকল্পগুলি নিম্নলিখিত ফাইলে তালিকাভুক্ত করা হয়েছে:
openthread/src/core/config/logging.h
ডিফল্ট লগ আউটপুট কনফিগারেশন হল OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
।
আউটপুট পদ্ধতি হল একটি উদাহরণ যেখানে আপনাকে মূলের পরিবর্তে প্ল্যাটফর্ম-স্তরের কনফিগারেশন ধ্রুবক আপডেট করতে হবে। উদাহরণস্বরূপ, সিমুলেশন উদাহরণ অ্যাপে আউটপুট পদ্ধতি পরিবর্তন করতে openthread/src/core/config/logging.h
এর পরিবর্তে openthread/examples/platforms/simulation/openthread-core-simulation-config.h
সম্পাদনা করুন।
লগ লেভেল
লগগুলি বিভিন্ন স্তরের তথ্য আউটপুট করতে পারে, OPENTHREAD_CONFIG_LOG_LEVEL
এর কম্পাইল-টাইম কনফিগারেশন ধ্রুবক হিসাবে সংজ্ঞায়িত। স্তরের বিকল্পগুলি নিম্নলিখিত ফাইলে তালিকাভুক্ত করা হয়েছে:
openthread/include/openthread/platform/logging.h
লগ লেভেলের তালিকা প্ল্যাটফর্ম লগিং ম্যাক্রো এপিআই রেফারেন্সেও পাওয়া যায়।
ডিফল্ট লগ স্তর হল OT_LOG_LEVEL_CRIT
যা শুধুমাত্র সবচেয়ে গুরুত্বপূর্ণ লগগুলিকে আউটপুট করে৷ পছন্দ অনুযায়ী আরো লগ দেখতে স্তর পরিবর্তন করুন. সমস্ত OpenThread লগ দেখতে, OT_LOG_LEVEL_DEBG
ব্যবহার করুন।
লগ অঞ্চল
লগ অঞ্চলগুলি নির্ধারণ করে যে ওপেন থ্রেড কোডের কোন ক্ষেত্রগুলি লগিংয়ের জন্য সক্রিয় করা হয়েছে। অঞ্চলের গণনা নিম্নলিখিত ফাইলে সংজ্ঞায়িত করা হয়েছে:
openthread/include/openthread/platform/logging.h
লগ অঞ্চলের তালিকা প্ল্যাটফর্ম লগিং গণনা API রেফারেন্সেও উপলব্ধ।
লগ অঞ্চলগুলি সাধারণত লগ ফাংশনে পরামিতি হিসাবে ব্যবহৃত হয়। সমস্ত অঞ্চল ডিফল্টরূপে সক্রিয় করা হয়।
ডিফল্ট লগিং ফাংশন
OpenThread-এর মধ্যে লগিং করার জন্য ডিফল্ট ফাংশন হল otPlatLog
, OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
এর কম্পাইল-টাইম কনফিগারেশন ধ্রুবক হিসাবে সংজ্ঞায়িত।
এই ফাংশন সম্পর্কে আরও তথ্যের জন্য প্ল্যাটফর্ম লগিং API রেফারেন্স দেখুন।
OpenThread উদাহরণ অ্যাপে সরাসরি এই ফাংশনটি ব্যবহার করতে, OT_REFERENCE_DEVICE
cmake বিকল্পটি ব্যবহার করুন। উদাহরণস্বরূপ, CC2538 উদাহরণের জন্য CLI অ্যাপের মধ্যে এটি ব্যবহার করতে:
./script/build -DOT_REFERENCE_DEVICE=ON
বিকল্পভাবে, openthread/etc/cmake/options.cmake
ফাইলটি নির্মাণের সময় ডিফল্টরূপে সক্রিয় করতে আপডেট করুন।
কিভাবে লগ সক্রিয় করতে হয়
লগ সক্রিয় করার আগে, নিশ্চিত করুন যে আপনার পরিবেশ OpenThread নির্মাণের জন্য কনফিগার করা হয়েছে। আরও তথ্যের জন্য ওপেন থ্রেড তৈরি করুন দেখুন।
সমস্ত লগ সক্রিয় করুন
সমস্ত লগ স্তর এবং অঞ্চলগুলি দ্রুত সক্ষম করতে, OT_FULL_LOGS
cmake বিকল্পটি ব্যবহার করুন:
./script/build -DOT_FULL_LOGS=ON
এই সুইচটি লগ লেভেলকে OT_LOG_LEVEL_DEBG
এ সেট করে এবং সমস্ত অঞ্চলের পতাকা চালু করে।
লগ একটি নির্দিষ্ট স্তর সক্রিয়
লগের একটি নির্দিষ্ট স্তর সক্ষম করতে, openthread/src/core/config/logging.h
সম্পাদনা করুন এবং OPENTHREAD_CONFIG_LOG_LEVEL
পছন্দসই স্তরে আপডেট করুন, তারপর OpenThread তৈরি করুন৷ উদাহরণস্বরূপ, OT_LOG_LEVEL_INFO
পর্যন্ত লগ সক্ষম করতে:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
সিসলগে লগগুলি দেখুন
লগগুলি ডিফল্টরূপে syslog
এ পাঠানো হয়। লিনাক্সে, এটি /var/log/syslog.
- সমস্ত লগ সক্ষম করে সিমুলেশন উদাহরণ তৈরি করুন:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- একটি সিমুলেটেড নোড শুরু করুন:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- একটি নতুন টার্মিনাল উইন্ডোতে, OT লগগুলির একটি রিয়েল-টাইম আউটপুট সেট আপ করুন:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- সিমুলেটেড নোডে, থ্রেড আনুন:
dataset init new
Donedataset
Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: d63e8e3e495ebbc3 Mesh Local Prefix: fd3d:b50b:f96d:722d/64 Network Key: dfd34f0f05cad978ec4e32b0413038ff Network Name: OpenThread-8f28 PAN ID: 0x8f28 PSKc: c23a76e98f1a6483639b1ac1271e2e27 Security Policy: 0, onrcb Donedataset commit active
Doneifconfig up
Donethread start
Done
tail
কমান্ড চালানোর টার্মিনাল উইন্ডোতে ফিরে যান। সিমুলেটেড নোডের জন্য লগগুলি রিয়েল টাইমে প্রদর্শন করা উচিত। আউটপুটে লগ ট্যাগগুলি নোট করুন: [INFO]
, [DEBG]
, [NOTE]
। এই সব লগ লেভেলের সাথে মিলে যায়। উদাহরণস্বরূপ, আপনি যদি লগ লেভেলকে OT_LOG_LEVEL_INFO
এ পরিবর্তন করেন, তাহলে DEBG
লগগুলি আউটপুট থেকে অদৃশ্য হয়ে যাবে।
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: SrcAddrMatch - Cleared all entries ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ... ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8} ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x7f133b) [Ip6+ Ip6- LLAddr MLAddr Rloc+ KeySeqCntr NetData Ip6Mult+ Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy] ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset panid ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset commit active ot-cli-ftd[30055]: [1] [INFO]-MESH-CP-: Active dataset set ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio sleeping ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: RadioPanId: 0x8f28 ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x007f0100) [KeySeqCntr Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy] ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: ifconfig up ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio receiving on channel 11 ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: thread start ot-cli-ftd[30055]: [1] [NOTE]-MLE-----: Role Disabled -> Detached ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Attempt to become router ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ... ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8} ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ... ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x7d4, maccntr:0x7d0, mliid:05e4b515e33746c8} ot-cli-ftd[30055]: [1] [DEBG]-MLE-----: Store Network Information ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Send Link Request (ff02:0:0:0:0:0:0:2)
CLI অ্যাপে লগগুলি দেখুন
লগগুলি সরাসরি OpenThread CLI উদাহরণ অ্যাপে দেখা যেতে পারে।
- উদাহরণ প্ল্যাটফর্মের জন্য কনফিগারেশন ফাইল সম্পাদনা করুন এবং অ্যাপে লগ আউটপুট পরিবর্তন করুন। সিমুলেশন উদাহরণের জন্য, এটি হল
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- লগের পছন্দসই স্তরের সাথে সিমুলেশন উদাহরণ তৈরি করুন। সমস্ত লগ সক্রিয় করতে:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- একটি সিমুলেটেড নোড শুরু করুন:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- ওপেন থ্রেড সিএলআই-এর মতো একই উইন্ডোতে আপনি লগ আউটপুট দেখতে পাবেন কারণ কমান্ডগুলি প্রক্রিয়া করা হয়।
আপনি যদি কাস্টম লগিং যোগ করে থাকেন এবং সমস্ত লগ সক্রিয় করেন, CLI লাইন বাফার বা UART ট্রান্সমিট বাফার অতিরিক্ত কাস্টম লগগুলি পরিচালনা করার জন্য যথেষ্ট বড় নাও হতে পারে। যদি কিছু লগ দেখা না হয় যখন সেগুলি করা উচিত, CLI লাইন বাফারের আকার বাড়ানোর চেষ্টা করুন, যাকে /openthread/src/cli/cli_config.h
এ OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
হিসাবে সংজ্ঞায়িত করা হয়েছে বা UART ট্রান্সমিট বাফারের আকার বাড়ানোর চেষ্টা করুন, প্লাটফর্মটিকে OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
হিসাবে সংজ্ঞায়িত করুন কনফিগারেশন ফাইল, যেমন /src/nrf52840/openthread-core-nrf52840-config.h
।
একটি NCP-এর জন্য লগগুলি দেখুন৷
একটি NCP-এর লগগুলি wpantund
এর মাধ্যমে হোস্টের syslog
এ পাঠানো হতে পারে। একটি লিনাক্স হোস্টের জন্য, এটি হল /var/log/syslog.
NCP লগিং সক্ষম করতে OPENTHREAD_CONFIG_LOG_OUTPUT
এর একটি OPENTHREAD_CONFIG_LOG_OUTPUT_APP
মান ব্যবহার করুন৷ প্ল্যাটফর্মের কনফিগারেশন ফাইলে এটি পরিবর্তন করুন।
উদাহরণস্বরূপ, একটি লিনাক্স হোস্টের সাথে সংযুক্ত একটি nrf52840 এর জন্য এটি সক্ষম করতে:
- প্ল্যাটফর্মের জন্য কনফিগারেশন ফাইল সম্পাদনা করুন এবং অ্যাপে লগ আউটপুট পরিবর্তন করুন। nrf52840-এর জন্য, এটি হল
./src/nrf52840/openthread-core-nrf52840-config.h
ot-nrf528xx সংগ্রহস্থলে:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- লগ এবং অন্যান্য NCP-নির্দিষ্ট পতাকাগুলির পছন্দসই স্তরের সাথে nrf52840 উদাহরণ তৈরি করুন৷ সমস্ত লগ সক্ষম করে একটি যোগদানকারী তৈরি করতে:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
এনসিপি ফ্ল্যাশ করুন, এটি লিনাক্স হোস্টের সাথে সংযুক্ত করুন এবং wpantund সংগ্রহস্থলে বিস্তারিত হিসাবে
wpantund
শুরু করুন।একবার এনসিপি চালু হলে, লিনাক্স মেশিনে
syslog
পরীক্ষা করুন:tail -F /var/log/syslog | grep "wpantund"
আপনি NCP-এর জন্য রিয়েল টাইমে OpenThread লগগুলি দেখতে পাবেন। আপনি তাদের
wpantund
আউটপুটে দেখতে পারেন।
রান টাইমে লগ লেভেল পরিবর্তন করুন
ডাইনামিক লগ লেভেল কন্ট্রোল চালু থাকলে রান টাইমে লগ লেভেল পরিবর্তন করা হতে পারে।
- বিকল্প দিয়ে অ্যাপটি তৈরি করুন
-DOT_LOG_LEVEL_DYNAMIC=ON
। যেমন,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- আপনার বাস্তবায়নের উপর নির্ভর করে লগ স্তর পরিবর্তন করুন:
- একটি সিস্টেম-অন-চিপ (SoC) এর জন্য, আপনার OpenThread অ্যাপ্লিকেশনের মধ্যে লগিং API ব্যবহার করুন।
- একটি NCP এর জন্য, কমান্ড লাইনে
wpanctl
ব্যবহার করুন।wpanctl
এর সংস্পর্শে থাকা সমস্ত বৈশিষ্ট্যের জন্যwpantund
সংগ্রহস্থলেwpan-properties.h
দেখুন এবং এর লগ স্তরের সংজ্ঞাগুলির জন্য Spinel API ।wpanctl set OpenThread:LogLevel 5