Skip to Content
TecnicaInfrastruttura🔍 Guida ai Log in Produzione

🔍 Guida ai Log in Produzione

Problema: Non vedo i log in PM2

Soluzioni Implementate

  1. Log PM2 configurati con file persistenti
  2. Auth logger personalizzato che scrive sia su console che su file
  3. 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 flush

2. 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.log

3. Script Helper (Raccomandato)

# Rendi eseguibile lo script chmod +x scripts/view-logs.sh # Esegui lo script ./scripts/view-logs.sh

Lo 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/logs

2. Riavvia PM2 con la nuova configurazione

cd /var/www/foodcost pm2 delete foodcost pm2 start ecosystem.config.js pm2 save

3. Verifica che i log vengano creati

ls -la /var/www/foodcost/logs/

Dovresti vedere:

  • pm2-out.log
  • pm2-error.log
  • auth.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.log

Dovresti 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 successfully

3. 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 save

File auth.log non viene creato

Problema: Il file /var/www/foodcost/logs/auth.log non esiste

Possibili cause:

  1. Permessi della directory
  2. L’app non è arrivata alla route di login
  3. 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 foodcost

Console.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 monit

Con tail multipli (split screen)

# Terminale 1 tail -f /var/www/foodcost/logs/pm2-out.log # Terminale 2 tail -f /var/www/foodcost/logs/auth.log

Con 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

  1. I file di log in /var/www/foodcost/logs/ sono persistenti e non vengono cancellati automaticamente
  2. Considera di impostare una rotazione dei log per evitare che crescano troppo
  3. I log auth.log contengono timestamp ISO per facilitare il debugging
  4. Usa pm2 flush con cautela - cancella TUTTI i log PM2

🔄 Rotazione Log (Opzionale)

Per evitare che i log crescano troppo:

# Installa logrotate config sudo nano /etc/logrotate.d/foodcost

Contenuto:

/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/foodcost
Last updated on