Here is what I did for anyone who has the same problem...
You can use the wp_login_failed hook as mentioned here, however this won't work if the user clicks login without entering a username and password.
To cover all errors you can copy the wp_authenticate() function located in wp-includes/pluggable.php and paste this in your themes functions.php file.
function wp_authenticate($username, $password) {
$username = sanitize_user($username);
$password = trim($password);
$user = apply_filters('authenticate', null, $username, $password);
if ( $user == null ) {
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
}
$ignore_codes = array('empty_username', 'empty_password');
if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes) ) {
// Put your code here
}
return $user;
}
You can then add you own code within if (is_wp_error($user) ... ) {.