174 lines
4.6 KiB
Markdown
174 lines
4.6 KiB
Markdown
# Sistema di Logging PyMsc
|
|
|
|
## Panoramica
|
|
|
|
L'applicazione PyMsc genera automaticamente file di log dettagliati che si **azzerano ad ogni avvio**. Tutti i log vengono salvati nella cartella `logs/` nella root del progetto.
|
|
|
|
## File di Log Generati
|
|
|
|
### 1. `app_debug.log`
|
|
**Log generale dell'applicazione**
|
|
|
|
Contiene:
|
|
- Eventi di avvio/arresto dell'applicazione
|
|
- Inizializzazione del radar
|
|
- Attivazione trasmissione periodica
|
|
- Errori e warning generali
|
|
|
|
Esempio:
|
|
```
|
|
[10:30:15.123] Application started
|
|
[10:30:16.456] === RADAR INITIALIZATION STARTED ===
|
|
[10:30:17.789] Enabling periodic message transmission...
|
|
[10:30:18.012] === RADAR INITIALIZATION COMPLETE ===
|
|
```
|
|
|
|
### 2. `rx_messages.log`
|
|
**Log dei messaggi ricevuti dal radar**
|
|
|
|
Contiene:
|
|
- Notifica di ricezione pacchetto UDP
|
|
- Dettagli di ogni messaggio decodificato (label, direzione, contenuto)
|
|
- Payload hex per debug avanzato
|
|
|
|
Esempio:
|
|
```
|
|
[10:30:20.123] Received 126 bytes from 127.0.0.1:51553
|
|
[10:30:20.124] B7 RT->BC - CW(sa=17,rt=20,wc=27) SW=0x0000 ERR=0x0000 Decoded (54 bytes)
|
|
[10:30:20.125] Payload hex: 00 00 00 00 01 02 03 04 ...
|
|
```
|
|
|
|
### 3. `tx_messages.log`
|
|
**Log dei messaggi inviati al radar**
|
|
|
|
Contiene:
|
|
- Messaggi di inizializzazione inviati
|
|
- Frame periodici inviati con lista messaggi
|
|
|
|
Esempio:
|
|
```
|
|
[10:30:17.100] INIT: A1 (Settings) sent - history=LEVEL_04, intensity=127
|
|
[10:30:20.000] Sending frame with messages: A4, A5
|
|
[10:30:20.040] Sending frame with messages: A2
|
|
```
|
|
|
|
### 4. `udp_raw.log`
|
|
**Log raw dei pacchetti UDP**
|
|
|
|
Contiene:
|
|
- Timestamp completo
|
|
- Indirizzo IP e porta sorgente
|
|
- Dump esadecimale completo del pacchetto
|
|
|
|
Esempio:
|
|
```
|
|
2025-12-05 10:30:20 127.0.0.1:51553 53150342000000003c3c...
|
|
```
|
|
|
|
Utile per:
|
|
- Analisi offline con Wireshark
|
|
- Debug di problemi di parsing
|
|
- Validazione protocollo
|
|
|
|
## Utilizzo
|
|
|
|
### Visualizzare i Log Durante l'Esecuzione
|
|
|
|
**Windows PowerShell:**
|
|
```powershell
|
|
# Log generale
|
|
Get-Content -Path logs\app_debug.log -Wait
|
|
|
|
# Log messaggi ricevuti
|
|
Get-Content -Path logs\rx_messages.log -Wait
|
|
|
|
# Log messaggi inviati
|
|
Get-Content -Path logs\tx_messages.log -Wait
|
|
```
|
|
|
|
**Linux/Mac:**
|
|
```bash
|
|
# Log generale
|
|
tail -f logs/app_debug.log
|
|
|
|
# Log messaggi ricevuti
|
|
tail -f logs/rx_messages.log
|
|
```
|
|
|
|
### Cercare Messaggi Specifici
|
|
|
|
```powershell
|
|
# Cerca tutti i messaggi B7
|
|
Select-String -Path logs\rx_messages.log -Pattern "B7"
|
|
|
|
# Cerca errori
|
|
Select-String -Path logs\app_debug.log -Pattern "ERROR"
|
|
|
|
# Conta quanti messaggi A1 sono stati inviati
|
|
(Select-String -Path logs\tx_messages.log -Pattern "A1").Count
|
|
```
|
|
|
|
### Analizzare Problemi
|
|
|
|
**Problema: Radar si disconnette**
|
|
1. Controlla `tx_messages.log` - i messaggi vengono inviati regolarmente?
|
|
2. Controlla `rx_messages.log` - il radar risponde?
|
|
3. Verifica i timestamp - ci sono gap temporali?
|
|
|
|
**Problema: Messaggi non compaiono nel Bus Monitor**
|
|
1. Controlla `rx_messages.log` - i messaggi arrivano?
|
|
2. Se sì → problema nella GUI
|
|
3. Se no → problema nel receiver o nella rete
|
|
|
|
**Problema: Parsing errato**
|
|
1. Apri `udp_raw.log` per vedere il pacchetto raw
|
|
2. Confronta con la struttura attesa del messaggio
|
|
3. Verifica marker e dimensioni
|
|
|
|
## Rotazione dei Log
|
|
|
|
I log vengono **azzerati automaticamente** ad ogni avvio dell'applicazione. Questo significa:
|
|
- ✅ Log sempre freschi e rilevanti per la sessione corrente
|
|
- ✅ Nessun file di log gigante da gestire
|
|
- ⚠ I log della sessione precedente vengono persi
|
|
|
|
Se vuoi conservare i log:
|
|
```powershell
|
|
# Backup manuale prima di riavviare
|
|
Copy-Item logs\*.log logs\backup\session_$(Get-Date -Format 'yyyyMMdd_HHmmss')
|
|
```
|
|
|
|
## Disabilitare il Debug Verboso
|
|
|
|
Per ridurre l'output sulla console (ma mantenere i log su file):
|
|
|
|
Nel file `app_controller.py`, cambia:
|
|
```python
|
|
self.debug = False # Era: self.debug = True
|
|
```
|
|
|
|
Questo disabilita i print `[RX]`, `[QUEUE]`, etc. ma **mantiene tutti i log su file**.
|
|
|
|
## Performance
|
|
|
|
Il sistema di logging è progettato per essere efficiente:
|
|
- **Scrittura asincrona** - non blocca il receiver
|
|
- **Buffer automatico** - il sistema operativo gestisce il buffering
|
|
- **Impatto minimo** - < 1ms per log entry
|
|
|
|
Se noti problemi di performance:
|
|
1. Disabilita `self.debug` (rimuove print sulla console)
|
|
2. Commenta le chiamate a `_log_rx()` nel loop più frequente
|
|
3. Considera di loggare solo ogni N messaggi
|
|
|
|
## Troubleshooting
|
|
|
|
### "Permission denied" all'avvio
|
|
La cartella `logs/` potrebbe essere protetta. Esegui con permessi amministratore o cambia la cartella.
|
|
|
|
### File di log vuoti
|
|
Verifica che il metodo `_setup_logging()` venga chiamato correttamente all'avvio.
|
|
|
|
### Log troppo grandi
|
|
Impossibile con il sistema attuale (azzera ad ogni avvio), ma se modifichi il codice per usare append, considera di implementare log rotation.
|