Encourage all developers to ask themselves, “Who will read this message and what action will they need to take?” whenever they are logging a message.
Does this message represent something that needs to be addressed immediately or is it just some information being captured for future reference?
What is the primary key / identity of the records from the database that were involved in the error?
What were the specific values that were input that caused the overflow/out of range/divide by zero/whatever run time error.
Consider using numeric error codes as a point of reference in all logged errors.
Create “dry run” and/or “debug” modes for complicated procedures/algorithms.
Make it easy for all members of the team to build and access support tools.
Have a resource/team dedicated to improving the situation.