🔍 Guida ai Log in Produzione
Problema: Non vedo i log in PM2
Soluzioni Implementate
- Log PM2 configurati con file persistenti
- Auth logger personalizzato che scrive sia su console che su file
- Script helper per visualizzare i log facilmente
📁 Dove Sono i Log
/var/www/foodcost/logs/
├── pm2-out.log # Stdout di Next.js (console.log)
├── pm2-error.log # Stderr di Next.js (console.error)
├── pm2-workers-out.log # Stdout dei workers
├── pm2-workers-error.log # Stderr dei workers
└── auth.log # Log specifici di autenticazione🛠️ Comandi per Vedere i Log
1. Comandi PM2 Base
# Log in tempo reale
pm2 logs foodcost
# Ultime 100 righe
pm2 logs foodcost --lines 100
# Solo errori
pm2 logs foodcost --err
# Pulire i log
pm2 flush2. Comandi File System
# Tail del log principale
tail -f /var/www/foodcost/logs/pm2-out.log
# Tail del log auth
tail -f /var/www/foodcost/logs/auth.log
# Ultimi 50 log di auth
tail -n 50 /var/www/foodcost/logs/auth.log
# Cerca nei log
grep "LOGIN" /var/www/foodcost/logs/auth.log
grep "ERROR" /var/www/foodcost/logs/pm2-error.log3. Script Helper (Raccomandato)
# Rendi eseguibile lo script
chmod +x scripts/view-logs.sh
# Esegui lo script
./scripts/view-logs.shLo script ti mostra un menu interattivo con:
- Visualizzazione log PM2
- Visualizzazione log auth
- Modalità live tail
- Pulizia log
🔄 Dopo il Deploy
1. Crea la directory log
mkdir -p /var/www/foodcost/logs
chmod 755 /var/www/foodcost/logs2. Riavvia PM2 con la nuova configurazione
cd /var/www/foodcost
pm2 delete foodcost
pm2 start ecosystem.config.js
pm2 save3. Verifica che i log vengano creati
ls -la /var/www/foodcost/logs/Dovresti vedere:
pm2-out.logpm2-error.logauth.log(viene creato al primo login)
🧪 Test dei Log
1. Prova a fare login
Vai su https://foodcostapp.meating3srl.it/auth/login e prova a loggarti.
2. Controlla i log auth
tail -f /var/www/foodcost/logs/auth.logDovresti vedere:
[2025-12-19T...] [LOGIN] Attempting login for: {"email":"user@example.com"}
[2025-12-19T...] [LOGIN] Login successful for user: {"userId":"507f..."}
[2025-12-19T...] [LOGIN] Cookie set successfully {"isProduction":true,"secure":true,"sameSite":"lax","path":"/"}
[2025-12-19T...] [AUTH/ME] Cookie check {"allCookies":"auth-token","authTokenPresent":true,"totalCookies":1}
[2025-12-19T...] [AUTH/ME] Token decoded successfully {"userId":"507f..."}
[2025-12-19T...] [AUTH/ME] User data fetched successfully3. Se non vedi nulla
# Verifica i permessi
ls -la /var/www/foodcost/logs/
# Verifica che PM2 stia usando la config giusta
pm2 show foodcost
# Riavvia completamente
pm2 restart foodcost --update-env🐛 Troubleshooting
Log PM2 vuoti
Problema: pm2 logs non mostra nulla
Soluzione:
# Verifica che l'app sia running
pm2 list
# Riavvia con log attivi
pm2 restart foodcost --update-env
# Se ancora non funziona, ricrea da zero
pm2 delete foodcost
pm2 start ecosystem.config.js
pm2 saveFile auth.log non viene creato
Problema: Il file /var/www/foodcost/logs/auth.log non esiste
Possibili cause:
- Permessi della directory
- L’app non è arrivata alla route di login
- Errore nella creazione della directory
Soluzione:
# Verifica/crea directory
mkdir -p /var/www/foodcost/logs
chmod 755 /var/www/foodcost/logs
chown -R $(whoami) /var/www/foodcost/logs
# Prova a creare il file manualmente
touch /var/www/foodcost/logs/auth.log
chmod 644 /var/www/foodcost/logs/auth.log
# Riavvia PM2
pm2 restart foodcostConsole.log non appare
Problema: I console.log standard non appaiono in produzione
Spiegazione: Next.js in produzione ottimizza e può rimuovere alcuni console.log. Per questo abbiamo creato authLogger che scrive su file.
Verifica:
# I log dovrebbero essere nel file auth.log
cat /var/www/foodcost/logs/auth.log
# O nei file PM2
cat /var/www/foodcost/logs/pm2-out.log📊 Monitoraggio Continuo
Con PM2 Monitoring
# Monitor real-time
pm2 monitCon tail multipli (split screen)
# Terminale 1
tail -f /var/www/foodcost/logs/pm2-out.log
# Terminale 2
tail -f /var/www/foodcost/logs/auth.logCon watch
watch -n 1 'tail -n 20 /var/www/foodcost/logs/auth.log'🎯 Quick Reference
# Vedere log auth in tempo reale
tail -f /var/www/foodcost/logs/auth.log
# Filtrare solo i login
tail -f /var/www/foodcost/logs/auth.log | grep LOGIN
# Filtrare solo gli errori
tail -f /var/www/foodcost/logs/auth.log | grep ERROR
# Ultimi 100 log
tail -n 100 /var/www/foodcost/logs/auth.log
# Cercare un utente specifico
grep "user@example.com" /var/www/foodcost/logs/auth.log
# Log delle ultime 24 ore
find /var/www/foodcost/logs/auth.log -mtime -1 -exec cat {} \;📝 Note Importanti
- I file di log in
/var/www/foodcost/logs/sono persistenti e non vengono cancellati automaticamente - Considera di impostare una rotazione dei log per evitare che crescano troppo
- I log
auth.logcontengono timestamp ISO per facilitare il debugging - Usa
pm2 flushcon cautela - cancella TUTTI i log PM2
🔄 Rotazione Log (Opzionale)
Per evitare che i log crescano troppo:
# Installa logrotate config
sudo nano /etc/logrotate.d/foodcostContenuto:
/var/www/foodcost/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
}Salva e testa:
sudo logrotate -f /etc/logrotate.d/foodcostLast updated on