One of our favorite tips involved the logging of customization work. I wanted to expand just a bit on that tip.
When creating logs for OSvC, consider creating a custom object that stores errors generated from your customizations.Then you can build in alerts and reporting using the base product to monitor your customizations for issues. Most commonly, you'll see the CBO record the error message, stack trace, line number and some identifier for which customization the error came from. You could also print out relevant IDs or data points so that they can be referenced for debugging later.
There's a fine balance between over-logging and under-logging: you want to be able to identify issues and debug them but you don't want so many non-actionable log items that information gets lost in the noise or your CBO table gets filled up and you can't report on it anymore.