Chapter 7. Logging, Monitoring, and Instrumentation for .NET

Back in 2007, when people were setting up their Nintendo Wii and dreaming of owning Apple’s revolutionary new touchscreen cellphone, James was working his first job as a graduate software engineer. Not in web-based SaaS applications where he works today, however, but starting an engineering career writing industrial control software for production lines, oil rigs, cruise liners, and the military. Of all the weird and exciting projects James had a chance to work on back then, the most fun was designing the control system software for a roller coaster. Let us tell you how that worked.

This was a theme park ride with several cars on wheels going around a typical roller coaster track. Each car carried four people and there were between three and five cars going around the track simultaneously at any one time. The cars would be sent off from the station, making their way up the chain-driven incline to the top of the track, then rolling down under gravity to make an intense, exciting, and most importantly safe ride.

The code that operated the roller coaster was incredibly simple: the software read an input for the “GO” button being pressed by a ride operator. This then commanded the brakes to release, sending the car from the station into the starting blocks of the incline. There, with no further control inputs from the software, the car would be picked up by the chain-lift mechanism, carried up to the top of the ramp, and ...

Get Developing on AWS with C# now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.