Logging and Debugging
Logging and debugging are critical aspects of developing and deploying applications in any language. A good log file provides insights into exactly what an application is doing and when.
This is an invaluable resource when things go wrong in a production environment as it enables our applications to be "observed," with the log acting like an activity trace.
For example, when a production application goes down at 3 A.M. and you are responsible for investigating, you will be very happy when you find a nice informative log file waiting for you, as this will be the first place you check.
Effective logging has layers that can be controlled, which allows us to control the verbosity of the log output in order to debug an issue. The perfect logging system provides enough information to be useful, but not so much that it becomes noisy and difficult to read. This is often a hard balance to strike, and this is where "log levels" come into...