WCF provides several GUI and command line tools to make it easier for you to create, deploy, and manage WCF applications. For example:
WCF provides a rich set of functionalities to monitor the different stages of a WCF application’s life:
The first two points, logging and tracing, are the most important and are covered in the sections that follow. The other remaining functionalities are covered in more detail in MSDN.
Message Logging refers to WCF’s ability to log incoming and outgoing messages. This kind of logging allows you to determine what arguments were passes and how the receiving endpoint saw the arguments expresses as XML. Also logging the message as it was received allows you to diagnose malformed messages as well as to see how the message arrived. You can also examine the security tokens used, parts encrypted and signed, and parts left intact.
Message Logging can be enabled via the SvcConfigEditor tool by selecting the Diagnostics node and then enabling options under Message Logging as shown below (note that this affects the underlying config file directly):

WCF logs messages at two different levels, service and transport: Messages logged at the Service Level are about to enter (on receiving) or leave (on sending) user code. Infrastructure messages (transactions, peer channel, and security) are also logged at this level, except for Reliable Messaging messages. Messages logged at the Transport Level are ready to be encoded or decoded for or after transportation on the wire.
In addition to logging levels, the user can modify other options under the Message Logging leaf of Diagnostics:

WCF messages should be viewed with the Service Trace Viewer SvcTraceViewer.exe as shown below:

Note on security: When message logging is enabled, personal information in application-specific headers, such as, a query string; and body information, such as, a credit card number, can become visible in the logs. The application deployer is responsible for enforcing access control on the configuration and log files. If you do not want this kind of information to be visible, you should disable logging, or filter out part of the data if you want to share the logs.
The following tips can help you to prevent the content of a log file from being exposed unintentionally:
You can use tracing instead of a debugger to understand how an application is behaving, or why it faults. WCF outputs the following data for diagnostic tracing:
WCF tracing is built on top of System.Diagnostics. To use tracing, you should define trace sources in the configuration file or in code. WCF defines a trace source per WCF assembly. The System.ServiceModel trace source is the most general WCF trace source, and records processing milestones across the WCF communication stack, from entering/leaving transport to entering/leaving user code. The System.ServiceModel.MessageLogging trace source records all messages that flow through the system.
You can configure tracing using the application’s configuration file—either Web.config for Web-hosted applications, or Appname.exe.config for self-hosted applications. The following shows how to enable tracing and set a trace source using the SvcConfigEditor tool:
At runtime, WCF feeds trace data to the listeners which process the data. WCF provides several predefined listeners for System.Diagnostics, which differ in the format they use for output. You can also add custom listener types.
End-To-End tracing can be observed with the Service Trace Viewer SvcTraceViewer.exe utility:

This utility is initially difficult to understand. To help you get started:
Refer to article Service Trace Viewer Tool (SvcTraceViewer.exe) for an overview of the utility and what the different icons mean.