Last time I talked about the four switches that control which types of messages get logged:
Whether to log the entire message is more of a universal option so I'll focus on explaining how the other three options are used internally.
There are actually a very small number of circumstances for which messages are traced. However, some of those code paths trigger a wide variety of dependent operations. If you're trying to work out an issue by observing where message logging is occurring from, you will sometimes get a very specific understanding of what is happening and sometimes get absolutely no information at all. As a positive though, there's not much middle ground so it's relatively easy to recognize which of the two situations you're in.
A malformed message is one where there isn't enough information to figure out what the message means and processing can't continue.
A service level message is one that is being processed by an application or dispatch component rather than a message delivery component.
Next time, I'll wrap up the discussion of the different trace options by going through the different locations where logging happens for message delivery components.