Senddera is a Laravel application. Most operational errors land in storage/logs/laravel.log. Knowing where to look cuts troubleshooting time from hours to minutes.
Primary log file
cd /var/www/senddera
tail -f storage/logs/laravel.log
Reproduce the issue (send test email, run campaign) and watch new lines. For a one-time dump of the last 200 lines:
tail -n 200 storage/logs/laravel.log
Log levels and .env
APP_DEBUG=false
LOG_CHANNEL=stack
LOG_LEVEL=debug
Keep APP_DEBUG=false in production — never expose stack traces to visitors. Temporarily set LOG_LEVEL=debug while diagnosing, then return to info or warning.
What to search for
| Symptom | Search terms |
|---|---|
| Queue stuck | queue, ProcessCampaign, MaxAttemptsExceeded |
| SMTP | Swift_Transport, SMTP, Connection could not be established |
| DNS / HTTP | Guzzle, cURL error |
| Permissions | Permission denied, storage/framework |
| Database | SQLSTATE, Deadlock |
Worker and web server logs
- Supervisor —
storage/logs/worker.log(path from your config) - PHP-FPM —
/var/log/php8.3-fpm.logor journal:journalctl -u php8.3-fpm -f - Nginx —
/var/log/nginx/error.logfor 502/504 during long imports - Mail server — if using local Postfix,
/var/log/mail.log
Failed queue jobs
php artisan queue:failed
php artisan queue:failed --id=UUID # details for one job
php artisan queue:retry all # after fixing root cause
Failed job payloads often include the exact SMTP response or PHP exception message.
Enable more detail (short term)
If logs are empty, confirm storage/logs is writable by the web and worker user:
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Log rotation
laravel.log can grow large on busy sites. Use logrotate or truncate after archiving:
gzip -c storage/logs/laravel.log > ~/laravel-$(date +%F).log.gz
: > storage/logs/laravel.log