Activity log is another very useful facility. It provides a high level view of key activities as they occur in Message Broker (file opened, message written, database updated etc). The key with activity log is that it is left on all the time. It consumes very little overhead and ensures there is always some diagnostics information available.
User trace is text based and a much lower level view of what Message Broker is up to as it processes your messages. User trace supports several levels of verbosity. There is a trace node provided in Message Broker which adds your information to the Message Broker trace. Trace can be controlled with the mqsichangetrace command and siblings (or equally through the Message Broker Java API and Message Broker Explorer). There is also service trace but that is really only intended for IBM to diagnose product issues.
So there is something of a gap for a more flexible way to log output from message flows. With that in mind I've knocked up a logging node which you can use to instrument your message flows. The node is configurable and outputs its messages through the most excellent Log4J logging framework.
You can read about what the node does in this PDF. The node works on Message Broker v8 Fix Pack 2 and later releases. Essentially the node writes messages to Log4J. The messages can contain anything including pieces of the actual message body being processing (for example, from an HL7 message). The output messages are collected into files according to their message flow, execution group and broker. You can switch logging on or off at any level at any time using a simple configuration file which is automatically reloaded. The node itself packaged as a JAR file here along with the source code here.