Repeatable execution

What should applications log? Much enterprise code has logging code liberally sprinkled over it. Often, too much. Programmers log lots of things out of fear of not being able to troubleshoot problems that might occur in production. Even if you log a lot, however, how do you know that you haven’t missed a piece of crucial information?

In this talk, I’ll discuss a formal method for deciding what to log, and what you don’t need to log. Learning from functional programming, distinguishing between pure and impure code holds the key to such decisions. Examples will be mainly in C#, with some Haskell as well. No knowledge of Haskell is necessary.