I totally agree it would be good to have this as a native feature.
Lacking that I created an open source (free!) tool called Butler.
It offers various useful add-on features (a task scheduler, key-value store useful for passing parameters between reload tasks, sending Slack messages, user defined webhooks, MQTT in/out etc). And monitoring for failed reload tasks.
It uses the log appenders already mentioned earlier in this thread to detect failed reloads, but Butler also gets metadata about the app and the (failed) script log to give as complete picture as possible to the person receiving the failed-reload-alert.
Output channels for failed-reload-alerts are
Email
Teams
Slack
InfluxDB (from where Grafana can be used to monitor things)
New Relic (provides an awesome birds-eye view on a Sense environment, including logs from failed reloads. You can also forward alerts from New Relic to Jira, which is useful if you're already using Jira.
Webhooks
MQTT
Signl4
You can monitor all reload tasks or just some (control which using a custom property). Failed reloads are picked up and forwarded to enabled destination channels within a few seconds.
Butler itself runs as a service on Windows, on Linux or macOS. And as a Docker container.
An alert email can for example look like this:
All in all it's a pretty nice tool that has by now proven itself at quite a few companies during many years.
NOTE: Upon clicking this link 2 tabs may open - please feel free to close the one with a login page. If you only see 1 tab with the login page, please try clicking this link first: Authenticate me! then try the link above again. Ensure pop-up blocker is off.