OpenThread günlükleri, çok sayıda derleme zamanı yapılandırma sabiti tarafından 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, aşağıdaki şekilde tanımlanan farklı çıkış günlük kaydı yöntemlerini destekler:
OPENTHREAD_CONFIG_LOG_OUTPUT
için derleme süresi yapılandırma sabiti. İlgili içeriği oluşturmak için kullanılan
günlük yöntemi seçenekleri aşağıdaki dosyada listelenmiştir:
openthread/src/core/config/logging.h
Varsayılan günlük çıkışı yapılandırması:
OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
Çıkış yöntemi,
temel yapılandırma sabiti yerine platform düzeyinde yapılandırma sabiti olarak kabul edilir. Örneğin,
simülasyon örnek uygulamasında çıkış yöntemini değiştirin,
-openthread/examples/platforms/simulation/openthread-core-simulation-config.h
openthread/src/core/config/logging.h
.
Günlük seviyeleri
Günlükler, derleme süresi olarak tanımlanan farklı düzeylerde bilgiler verebilir
OPENTHREAD_CONFIG_LOG_LEVEL
yapılandırma sabitidir. Seviye seçenekleri:
aşağıdaki dosyada listelenmiştir:
openthread/include/openthread/platform/logging.h
Günlük düzeylerinin listesi Platform Logging Makroları API referansı.
Varsayılan günlük düzeyi OT_LOG_LEVEL_CRIT
olup yalnızca en çok
kritik günlükler. İstediğiniz gibi daha fazla günlük görmek için düzeyi değiştirin. Tümünü görmek için
OpenThread günlüklerini kullanın: OT_LOG_LEVEL_DEBG
.
Bölgeleri günlüğe kaydet
Günlük bölgeleri, OpenThread kodunun hangi alanları için etkinleştirildiğini belirler günlük kaydı. Bölge numaralandırması aşağıdaki dosyada tanımlanır:
openthread/include/openthread/platform/logging.h
Günlük bölgeleri listesi, Platform Logging Enumerations API referansı.
Günlük bölgeleri, günlük işlevlerinde parametre olarak yaygın olarak kullanılır. Tüm bölgeler varsayılan olarak etkindir.
Varsayılan günlük kaydı işlevi
OpenThread içinde günlük kaydı için varsayılan işlev otPlatLog
şeklindedir ve
derleme zamanı yapılandırma sabiti
OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
.
Platform Logging API'yi inceleyin bu işlev hakkında daha fazla bilgi için referans bölümüne bakın.
Bu işlevi doğrudan OpenThread örnek uygulamalarında kullanmak için OT_REFERENCE_DEVICE
cmake seçeneğini kullanabilirsiniz. Örneğin, bunu CC2538 örneğine ilişkin KSA uygulamasında kullanmak için:
./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ükler nasıl etkinleştirilir?
Günlükleri etkinleştirmeden önce ortamınızın derleme işlemleri için yapılandırıldığından emin olun. OpenThread. Daha fazla bilgi için OpenThread oluşturma bölümüne bakın.
Tüm günlükleri etkinleştir
Tüm günlük düzeylerini ve bölgeleri hızlı bir şekilde 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ölgeyi etkinleştirir
işaretidir.
Belirli bir düzeyde günlük etkinleştirme
Belirli bir düzeyde günlük etkinleştirmek için openthread/src/core/config/logging.h
dosyasını düzenleyip güncelleyin.
OPENTHREAD_CONFIG_LOG_LEVEL
öğesini istediğiniz düzeye getirip OpenThread oluşturun. Örneğin,
örnek, OT_LOG_LEVEL_INFO
tarihine kadar olan günlükleri etkinleştirmek için:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Günlükleri sistem günlüğünde görüntüle
Günlükler varsayılan olarak syslog
cihazına gönderilir. Linux'ta bu /var/log/syslog.
- Tüm günlükler etkinleştirilerek simülasyon örneğini oluşturun:
.cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Düğüm simülasyonu 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ı ayarlayın:
.tail -F /var/log/syslog | grep "ot-cli-ftd"
- Simüle edilen düğümde Thread'i 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 şunun için gerçek zamanlı olarak görüntülenmelidir:
simüle edilen düğüm. Çıkıştaki günlük etiketlerine dikkat edin: [INFO]
, [DEBG]
, [NOTE]
. Bunların tümü
günlük düzeylerine. Ö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üle
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üğü değiştirin
çıkış olarak ekleyebilirsiniz. Simülasyon örneğinde
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üzeyinde simülasyon örneğini oluşturun. Tümünü etkinleştirmek için
günlükler:
../script/cmake-build simulation -DOT_FULL_LOGS=ON
- Düğüm simülasyonu başlatın:
../build/simulation/examples/apps/cli/ot-cli-ftd 1
- Günlük çıkışını OpenThread CLI ile aynı pencerede görürsünüz: komutlar işlenir.
Özel günlük kaydı eklediyseniz ve tüm günlükleri etkinleştirdiyseniz, CLI satır arabelleği veya UART iletimi
arabellek, ek özel günlükleri işleyecek kadar büyük olmayabilir. Bazı günlükler
görünmesi için KSA satırının boyutunu artırmayı deneyin.
arabellek, şurada OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
olarak tanımlanır:
/openthread/src/cli/cli_config.h
ya da UART iletim arabelleğinin boyutunu artırmak,
OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
gibi, platformun yapılandırma dosyasındaki
/src/nrf52840/openthread-core-nrf52840-config.h
.
NCP günlüklerini görüntüleme
Bir NCP'nin günlükleri, wpantund
aracılığıyla ana makinenin syslog
kısmına gönderilebilir. Örneğin,
Linux ana makinesi, bu /var/log/syslog.
Şu değeri kullanın: OPENTHREAD_CONFIG_LOG_OUTPUT
NCP günlük kaydını etkinleştirmek için OPENTHREAD_CONFIG_LOG_OUTPUT_APP
. Bunu şurada değiştirin:
platformun yapılandırma dosyası olabilir.
Örneğin, bunu bir Linux ana makinesine bağlı nrf52840 için etkinleştirmek üzere:
- Platformun yapılandırma dosyasını düzenleyin ve günlük çıkışını
görebilirsiniz. nrf52840 için bu
ot-nrf528xx deposunda
./src/nrf52840/openthread-core-nrf52840-config.h
:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- nrf52840 örneğini istediğiniz günlük kaydı ve diğer düzey
NCP'ye özel işaretler. Tüm günlüklerin etkin olduğu bir birleştirici oluşturmak için:
../script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
NCP'yi güncelleyin, Linux ana makinesine bağlayın ve
wpantund
öğesini şu şekilde başlatın: wpantund deposunda bulabilirsiniz.NCP çalışmaya başladıktan sonra Linux makinesinde
syslog
öğesini kontrol edin:tail -F /var/log/syslog | grep "wpantund"
OpenThread günlüklerinin NCP için gerçek zamanlı olarak görüntülendiğini görürsünüz. 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 kontrolü etkinse çalışma sırasında günlük düzeyleri 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 üzerinde sistem (SoC) için Logging API'yi OpenThread uygulaması.
- NCP için komut satırında
wpanctl
kullanın.wpanctl
ve Spinel API kapsamındaki tüm özelliklerin günlük düzeyi tanımları içinwpantund
deposundakiwpan-properties.h
bölümüne bakın.wpanctl set OpenThread:LogLevel 5