OpenThread günlükleri çok sayıda derleme zamanı yapılandırma sabitiyle kontrol edilir. Aksi belirtilmedikçe, bu sabit değerler aşağıdaki dosyada tanımlanır:
openthread/src/core/config/logging.h
Çıkış yöntemleri
OpenThread, OPENTHREAD_CONFIG_LOG_OUTPUT
için derleme zamanı yapılandırma sabiti olarak tanımlanan farklı çıkış günlük kaydı yöntemlerini destekler. Günlük kaydı yöntemi seçenekleri aşağıdaki dosyada listelenir:
openthread/src/core/config/logging.h
Varsayılan günlük çıkışı yapılandırması OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
şeklindedir.
Çıkış yöntemi, temel olan yerine platform düzeyinde yapılandırma sabitini güncellemeniz gerekebilecek bir örnektir. Örneğin, simülasyon örnek uygulamasında çıkış yöntemini değiştirmek için openthread/src/core/config/logging.h
yerine openthread/examples/platforms/simulation/openthread-core-simulation-config.h
öğesini düzenleyin.
Günlük seviyeleri
Günlükler, OPENTHREAD_CONFIG_LOG_LEVEL
'ın derleme zamanı yapılandırma sabiti olarak tanımlanan çeşitli bilgi çıkışları oluşturabilir. Seviye seçenekleri aşağıdaki dosyada listelenmiştir:
openthread/include/openthread/platform/logging.h
Günlük düzeylerinin listesini Platform Logging Makroları API referansında da bulabilirsiniz.
Varsayılan günlük düzeyi, yalnızca en kritik günlüklerin çıkışını veren OT_LOG_LEVEL_CRIT
değeridir. İstediğiniz kadar günlük görmek için düzeyi değiştirin. Tüm OpenThread günlüklerini görmek için OT_LOG_LEVEL_DEBG
politikasını kullanın.
Bölgeleri günlüğe kaydet
Günlük bölgeleri, günlük kaydı için OpenThread kodunun hangi alanlarının etkinleştirildiğini belirler. Bölge numaralandırması aşağıdaki dosyada tanımlanır:
openthread/include/openthread/platform/logging.h
Günlük bölgelerinin listesi Platform Log enumerations API referansında da mevcuttur.
Günlük bölgeleri, genellikle günlük işlevlerinde parametre olarak kullanılır. Tüm bölgeler varsayılan olarak etkindir.
Varsayılan günlük kaydı işlevi
OpenThread'daki günlük kaydı için varsayılan işlev, otPlatLog
'dir. OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
, derleme zamanı yapılandırma sabiti olarak tanımlanır.
Bu işlev hakkında daha fazla bilgi edinmek için Platform Logging API referansına bakın.
Bu işlevi doğrudan OpenThread örnek uygulamalarında kullanmak için OT_REFERENCE_DEVICE
cmake seçeneğini kullanın. Örneğin, CC2538 örneği için CLI uygulamasında kullanmak üzere:
./script/build -DOT_REFERENCE_DEVICE=ON
Alternatif olarak, oluşturma sırasında varsayılan olarak etkinleştirmek için openthread/etc/cmake/options.cmake
dosyasını güncelleyin.
Günlükleri etkinleştirme
Günlükleri etkinleştirmeden önce, ortamınızın OpenThread derlemesi için yapılandırıldığından emin olun. Daha fazla bilgi için OpenOpenThread oluştur bölümüne bakın.
Tüm günlükleri etkinleştir
Tüm günlük seviyeleri ve bölgeleri hızlıca etkinleştirmek için OT_FULL_LOGS
cmake seçeneğini kullanın:
./script/build -DOT_FULL_LOGS=ON
Bu anahtar, günlük düzeyini OT_LOG_LEVEL_DEBG
olarak ayarlar ve tüm bölge işaretlerini etkinleştirir.
Belirli bir düzeyde günlük kaydını etkinleştirme
Belirli bir düzeyde günlük kaydını etkinleştirmek için openthread/src/core/config/logging.h
dosyasını düzenleyip OPENTHREAD_CONFIG_LOG_LEVEL
alanını istediğiniz düzeye güncelleyin, ardından OpenThread kodunu oluşturun. Örneğin, en fazla OT_LOG_LEVEL_INFO
günlük kaydını etkinleştirmek için:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Sistem günlüğündeki günlükleri görüntüleme
Günlükler, varsayılan olarak syslog
hedefine gönderilir. Linux'ta bu /var/log/syslog.
- Tüm günlükler etkin haldeyken simülasyon örneğini oluşturun:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Simülasyon simülasyonu düğümü başlatın:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Yeni bir terminal penceresinde OT günlüklerinin gerçek zamanlı çıkışını oluşturun:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Simüle edilen düğümde İleti dizisini açın:
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
komutunu çalıştıran terminal penceresine geri dönün. Günlükler, simüle edilen düğüm için gerçek zamanlı olarak gösterilir. Çıkıştaki günlük etiketlerini not edin: [INFO]
, [DEBG]
, [NOTE]
. Bunların tümü günlük düzeylerine karşılık gelir. Örneğin, günlük düzeyini OT_LOG_LEVEL_INFO
olarak değiştirirseniz DEBG
günlükleri çıkıştan kaybolur.
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)
Günlükleri CLI uygulamasında görüntüleyin
Günlükler, doğrudan OpenThread CLI örnek uygulamasında görüntülenebilir.
- Örnek platformun yapılandırma dosyasını düzenleyin ve günlük çıktısını uygulamaya değiştirin. Simülasyon örneği için bu şöyledir:
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- İstediğiniz günlük düzeyiyle simülasyon örneğini oluşturun. Tüm günlükleri etkinleştirmek için:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Simülasyon simülasyonu düğümü başlatın:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Günlük çıktısı, komutlar işlenirken OpenThread KSA ile aynı pencerede gösterilir.
Özel günlük kaydı ekleyip tüm günlükleri etkinleştirdiyseniz CLI satırı arabelleği veya UART aktarım arabelleği, ek özel günlükleri işleyebilecek kadar büyük olmayabilir. Gerektiğinde bazı günlükler görünmüyorsa CLI satır arabelleğinin boyutunu (/openthread/src/cli/cli_config.h
ile OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
şeklinde tanımlanır) veya platformun yapılandırma dosyasında OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
şeklinde tanımlanan UART aktarım arabelleğinin boyutunu (/src/nrf52840/openthread-core-nrf52840-config.h
gibi) artırmayı deneyin.
NCP günlüklerini görüntüleme
NCP günlükleri, wpantund
yoluyla bir ana makinenin syslog
adresine gönderilebilir. Bu, bir Linux ana makinesi için /var/log/syslog.
NCP günlük kaydını etkinleştirmek için OPENTHREAD_CONFIG_LOG_OUTPUT
tutarında bir OPENTHREAD_CONFIG_LOG_OUTPUT_APP
değeri kullanın. Bunu platformun yapılandırma dosyasında değiştirin.
Örneğin, bir Linux ana makinesine bağlı bir nrf52840 için bunu etkinleştirmek üzere:
- Platformun yapılandırma dosyasını düzenleyin ve günlük çıktısını uygulamaya değiştirin. nrf52840 kod deposunda ot-nrf528xx deposundaki
./src/nrf52840/openthread-core-nrf52840-config.h
bulunmaktadır:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- nrf52840 örneğini istediğiniz günlük düzeyi ve NCP'ye özgü diğer işaretlerle oluşturun. Tüm günlüklerin etkin olduğu bir toplayıcı oluşturmak için:
./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
NCP'yi Flash'a ekleyin, Linux ana makineye bağlayın ve wpantund deposunda ayrıntıları verilen şekilde
wpantund
başlatın.NCP çalışmaya başladıktan sonra, Linux makinesinde
syslog
bölümüne bakın:tail -F /var/log/syslog | grep "wpantund"
OpenCP günlüklerinin NCP için gerçek zamanlı olarak görüntülenmesi gerekir. Bunları
wpantund
çıkışında da görebilirsiniz.
Çalışma zamanında günlük düzeyini değiştirme
Dinamik günlük düzeyi denetimi etkinleştirilirse günlük düzeyleri, çalıştırma sırasında değiştirilebilir.
- Uygulamayı
-DOT_LOG_LEVEL_DYNAMIC=ON
seçeneğiyle oluşturun. Örneğin,./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
- Uygulamanıza bağlı olarak günlük düzeyini değiştirin:
- Çip sistemi (SoC) için OpenThread uygulamanızdaki Logging API'yi kullanın.
- NCP için komut satırında
wpanctl
kullanın.wpanctl
maruz kalan tüm mülkler içinwpantund
veri havuzundawpan-properties.h
, günlük düzeyinde tanımları için ise Spinel API'yi inceleyin.wpanctl set OpenThread:LogLevel 5