Kaynağı GitHub'da görüntüleyin
OpenThread günlükleri, derleme zamanı yapılandırma sabitleri tarafından kontrol edilir. Aksi belirtilmediği sürece bu sabitler aşağıdaki dosyada tanımlanır:
openthread/src/core/config/logging.h
Çıkış yöntemleri
OpenThread, OPENTHREAD_CONFIG_LOG_OUTPUT
derleme zamanı yapılandırma sabiti olarak tanımlanan farklı çıkış günlüğü yöntemlerini destekler. Günlüğe kaydetme 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
'dır.
Çıkış yöntemi, temel sabit yerine platform düzeyindeki yapılandırma sabitini güncellemeniz gerekebilecek bir örnektir. Örneğin, simülasyon örneği 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
derleme zamanı yapılandırma sabiti olarak tanımlanan farklı bilgi düzeyleri çıkışı verebilir. Seviye seçenekleri aşağıdaki dosyada listelenmiştir:
openthread/include/openthread/platform/logging.h
Günlük düzeylerinin listesi Platform Logging Macros API referansında da mevcuttur.
Varsayılan günlük düzeyi OT_LOG_LEVEL_CRIT
'dır ve yalnızca en kritik günlükleri verir. İstediğiniz gibi daha fazla günlük görmek için seviyeyi değiştirin. Tüm OpenThread günlüklerini görmek için OT_LOG_LEVEL_DEBG
kullanın.
Günlük bölgeleri
Günlük bölgeleri, OpenThread kodunun hangi alanlarının günlüğe kaydetme için 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 Logging Enumerations API referansında da mevcuttur.
Günlük bölgeleri, günlük işlevlerinde genellikle parametre olarak kullanılır. Tüm bölgeler varsayılan olarak etkindir.
Varsayılan günlük kaydı işlevi
OpenThread'de günlük kaydı için varsayılan işlev otPlatLog
'dır ve OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
'nin derleme zamanı yapılandırma sabiti olarak tanımlanır.
Bu işlev hakkında daha fazla bilgi 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 KSA 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 oluşturmaya uygun şekilde yapılandırıldığından emin olun. Daha fazla bilgi için OpenThread'i oluşturma başlıklı makaleyi inceleyin.
Tüm günlükleri etkinleştirme
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ölge işaretlerini etkinleştirir.
Belirli bir günlük düzeyini etkinleştirme
Belirli bir günlük düzeyini etkinleştirmek için openthread/src/core/config/logging.h
değerini düzenleyin ve OPENTHREAD_CONFIG_LOG_LEVEL
değerini istediğiniz düzeyle güncelleyin, ardından OpenThread'i oluşturun. Örneğin, OT_LOG_LEVEL_INFO
'ya kadar günlükleri etkinleştirmek için:
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build
Günlükleri syslog'da görüntüleme
Günlükler varsayılan olarak syslog
konumuna gönderilir. Linux'ta bu /var/log/syslog.
- Tüm günlükler etkinleştirilmiş şekilde simülasyon örneğini oluşturun:
cd openthread
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Simüle edilmiş bir düğüm başlatma:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Yeni bir terminal penceresinde OT günlüklerinin anlık çıkışını ayarlayın:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Simüle edilmiş 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
komutunun çalıştırıldığı terminal penceresine geri dönün. Günlükler, simüle edilmiş düğüm için gerçek zamanlı olarak gösterilmelidir. Çıkıştaki günlük etiketlerine dikkat 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 KSA uygulamasında görüntüleme
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 çıkışını uygulamaya yönlendirin. Simülasyon örneği için bu
openthread/examples/platforms/simulation/openthread-core-simulation-config.h
'dır:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- Simülasyon örneğini istediğiniz günlük düzeyinde oluşturun. Tüm günlükleri etkinleştirmek için:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Simüle edilmiş bir düğüm başlatma:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Komutlar işlenirken OpenThread CLI ile aynı pencerede günlük çıkışı görmeniz gerekir.
Özel günlük kaydı eklediyseniz ve tüm günlükleri etkinleştirdiyseniz CLI satır arabelleği veya UART iletim
arabelleği, ek özel günlükleri işlemek için yeterince büyük olmayabilir. Bazı günlükler görünmesi gerektiği halde görünmüyorsa /openthread/src/cli/cli_config.h
içinde OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
olarak tanımlanan CLI satır arabelleğinin boyutunu veya /src/nrf52840/openthread-core-nrf52840-config.h
gibi platformun yapılandırma dosyasında OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
olarak tanımlanan UART iletim arabelleğinin boyutunu artırmayı deneyin.
Çalışma zamanında günlük kaydı düzeyini değiştirme
Dinamik günlük düzeyi kontrolü etkinleştirilmişse günlük düzeyleri çalışma zamanı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
- OpenThread uygulamanızda Logging API'yi kullanın.