Kaynağı GitHub'da görüntüleyin
OpenThread günlükleri, derleme zamanındaki birçok yapılandırma sabitiyle kontrol edilir. Aksi belirtilmedikçe 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ük kaydı yöntemlerini destekler. Günlük kaydı 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ı şu şekildedir: OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
.
Çıkış yöntemi, temel yapılandırma sabitinin yerine platform düzeyindeki yapılandırma sabitini güncellemeniz gerekebileceği 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
değerini düzenleyin.
Günlük seviyeleri
Günlükler, OPENTHREAD_CONFIG_LOG_LEVEL
derleme zamanı yapılandırma sabiti olarak tanımlanan farklı düzeylerde bilgi çıkışı sağlayabilir. Seviye seçenekleri aşağıdaki dosyada listelenmiştir:
openthread/include/openthread/platform/logging.h
Günlük düzeylerinin listesi Platform Günlük Kaydetme Makroları API referansında da mevcuttur.
Varsayılan günlük düzeyi, yalnızca en kritik günlükleri veren OT_LOG_LEVEL_CRIT
'dir. İstediğiniz kadar 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
simgesini kullanın.
Bölgeleri günlüğe kaydet
Günlük bölgeleri, OpenThread kodunun hangi alanlarının günlük kaydı için etkinleştirileceğ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 Günlük Kaydetme Tanımlamaları API referansında da mevcuttur.
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'de günlük kaydı için varsayılan işlev otPlatLog
şeklindedir. Bu işlev, OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION
işleminin derleme süresi 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 CLI uygulamasında kullanmak üzere:
./script/build -DOT_REFERENCE_DEVICE=ON
Alternatif olarak, derleme sırasında varsayılan olarak etkinleştirilecek şekilde 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şturmak için yapılandırıldığından emin olun. Daha fazla bilgi için OpenThread oluşturma bölümüne bakın.
Tüm günlükleri etkinleştirme
Tüm günlük düzeylerini ve bölgelerini 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 düzeyde günlük etkinleştirmek için openthread/src/core/config/logging.h
öğesini düzenleyin ve
OPENTHREAD_CONFIG_LOG_LEVEL
uygulamasını istediğiniz düzeye güncelleyin, ardından OpenThread oluşturun. Örneğin, OT_LOG_LEVEL_INFO
'e kadarki 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
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
- Simülasyonlu bir 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ı ayarlayın:
tail -F /var/log/syslog | grep "ot-cli-ftd"
- Simülasyonlu düğümde İleti dizisi'ni 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örüntülenmelidir. Çı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 çıktıdan kaldırılır.
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 uygulamaya giden günlük çıkışını değiştirin. Simülasyon örneği için bu
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 günlükleri etkinleştirmek için:
./script/cmake-build simulation -DOT_FULL_LOGS=ON
- Simülasyonlu bir düğüm başlatın:
./build/simulation/examples/apps/cli/ot-cli-ftd 1
- Komutlar işlenirken OpenThread CLI ile aynı pencerede günlük çıkışını görürsünüz.
Ö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 gerektiği gibi görünmüyorsa /openthread/src/cli/cli_config.h
'te OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH
olarak tanımlanan CLI satır arabelleğinin boyutunu veya platformun yapılandırma dosyasında /src/nrf52840/openthread-core-nrf52840-config.h
gibi OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE
olarak tanımlanan UART aktarım arabelleğinin boyutunu artırmayı deneyin.
NCP'nin günlüklerini görüntüleme
NCP'nin günlükleri, wpantund
üzerinden bir ana makinenin syslog
adresine gönderilebilir. Bir Linux ana makinesi için bu, /var/log/syslog.
NCP günlük kaydını etkinleştirmek için OPENTHREAD_CONFIG_LOG_OUTPUT
değerini OPENTHREAD_CONFIG_LOG_OUTPUT_APP
olarak kullanın. Bunu platformun yapılandırma dosyasında değiştirin.
Örneğin, 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 çıkışını uygulamaya değiştirin. nrf52840 için bu, ot-nrf528xx deposundaki
./src/nrf52840/openthread-core-nrf52840-config.h
dosyasıdır:#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
- nrf52840 örneğini, istediğiniz günlük düzeyinde ve NCP'ye özgü diğer işaretlerle derleyin. 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 flaşlayın, Linux ana makinesine bağlayın ve
wpantund
'yi wpantund deposunda açıklandığı şekilde başlatın.NCP çalışmaya başladıktan sonra Linux makinesinde
syslog
dosyasını 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. Bu değerleri
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
- Günlük düzeyini uygulamanıza bağlı olarak değiştirin:
- Yonga üzerinde sistem (SoC) için OpenThread uygulamanızda Logging API'yi kullanın.
- NCP için komut satırında
wpanctl
kullanın.wpanctl
'e sunulan tüm özellikler içinwpantund
deposundakiwpan-properties.h
dosyasına, günlük düzeyi tanımları için de Spinel API'ye bakın.wpanctl set OpenThread:LogLevel 5