OpenThread লগ

GitHub-এ উৎস দেখুন

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.

  1. সমস্ত লগ সক্ষম করে সিমুলেশন উদাহরণ তৈরি করুন:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. একটি সিমুলেটেড নোড শুরু করুন:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. একটি নতুন টার্মিনাল উইন্ডোতে, OT লগগুলির একটি রিয়েল-টাইম আউটপুট সেট আপ করুন:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. সিমুলেটেড নোডে, থ্রেড আনুন:
dataset init new
Done
dataset
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
Done
dataset commit active
Done
ifconfig up
Done
thread 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 উদাহরণ অ্যাপে দেখা যেতে পারে।

  1. উদাহরণ প্ল্যাটফর্মের জন্য কনফিগারেশন ফাইল সম্পাদনা করুন এবং অ্যাপে লগ আউটপুট পরিবর্তন করুন। সিমুলেশন উদাহরণের জন্য, এটি হল openthread/examples/platforms/simulation/openthread-core-simulation-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. লগের পছন্দসই স্তরের সাথে সিমুলেশন উদাহরণ তৈরি করুন। সমস্ত লগ সক্রিয় করতে:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. একটি সিমুলেটেড নোড শুরু করুন:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. ওপেন থ্রেড সিএলআই-এর মতো একই উইন্ডোতে আপনি লগ আউটপুট দেখতে পাবেন কারণ কমান্ডগুলি প্রক্রিয়া করা হয়।

আপনি যদি কাস্টম লগিং যোগ করে থাকেন এবং সমস্ত লগ সক্রিয় করেন, CLI লাইন বাফার বা UART ট্রান্সমিট বাফার অতিরিক্ত কাস্টম লগগুলি পরিচালনা করার জন্য যথেষ্ট বড় নাও হতে পারে। যদি কিছু লগ দেখা না হয় যখন সেগুলি করা উচিত, CLI লাইন বাফারের আকার বাড়ানোর চেষ্টা করুন, যাকে /openthread/src/cli/cli_config.hOPENTHREAD_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 এর জন্য এটি সক্ষম করতে:

  1. প্ল্যাটফর্মের জন্য কনফিগারেশন ফাইল সম্পাদনা করুন এবং অ্যাপে লগ আউটপুট পরিবর্তন করুন। nrf52840-এর জন্য, এটি হল ./src/nrf52840/openthread-core-nrf52840-config.h ot-nrf528xx সংগ্রহস্থলে:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. লগ এবং অন্যান্য NCP-নির্দিষ্ট পতাকাগুলির পছন্দসই স্তরের সাথে nrf52840 উদাহরণ তৈরি করুন৷ সমস্ত লগ সক্ষম করে একটি যোগদানকারী তৈরি করতে:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. এনসিপি ফ্ল্যাশ করুন, এটি লিনাক্স হোস্টের সাথে সংযুক্ত করুন এবং wpantund সংগ্রহস্থলে বিস্তারিত হিসাবে wpantund শুরু করুন।

  4. একবার এনসিপি চালু হলে, লিনাক্স মেশিনে syslog পরীক্ষা করুন:

    tail -F /var/log/syslog | grep "wpantund"
    

  5. আপনি NCP-এর জন্য রিয়েল টাইমে OpenThread লগগুলি দেখতে পাবেন। আপনি তাদের wpantund আউটপুটে দেখতে পারেন।

রান টাইমে লগ লেভেল পরিবর্তন করুন

ডাইনামিক লগ লেভেল কন্ট্রোল চালু থাকলে রান টাইমে লগ লেভেল পরিবর্তন করা হতে পারে।

  1. বিকল্প দিয়ে অ্যাপটি তৈরি করুন -DOT_LOG_LEVEL_DYNAMIC=ON । যেমন,
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
  2. আপনার বাস্তবায়নের উপর নির্ভর করে লগ স্তর পরিবর্তন করুন:
    1. একটি সিস্টেম-অন-চিপ (SoC) এর জন্য, আপনার OpenThread অ্যাপ্লিকেশনের মধ্যে লগিং API ব্যবহার করুন।
    2. একটি NCP এর জন্য, কমান্ড লাইনে wpanctl ব্যবহার করুন। wpanctl এর সংস্পর্শে থাকা সমস্ত বৈশিষ্ট্যের জন্য wpantund সংগ্রহস্থলে wpan-properties.h দেখুন এবং এর লগ স্তরের সংজ্ঞাগুলির জন্য Spinel API
      wpanctl set OpenThread:LogLevel 5