Structured logging that pays for itself
A log line that reads user 42 failed login from 1.2.3.4 is for humans. A log
line that's {"event":"login_failed","user":42,"ip":"1.2.3.4"} is for humans
and every query you'll ever want to run later.
The moment you can WHERE event = 'login_failed' GROUP BY ip, your logs stop
being a wall of text and start being a database.