WL#10200: Change GCS/XCOM to have dynamic debugging and tracing

Affects: Server-8.0   —   Status: Complete

EXECUTIVE SUMMARY
-----------------
The goal of this WL is to allow users to dynamically filter out debugging and 
tracing messages per sub-system (i.e. GCS, XCOM, etc) without a noticeable 
impact on performance in production. Currently, it is extremely hard to trace 
bugs in production because the error log does not provide detailed information 
on the execution and enabling debug and trace requires a different build and 
deployment.

Two different logging infrastructures will be created. One to report error,
warning and information messages and another one for debugging and tracing.
The error, warning and information messages will be sent to the sink that is
currently provided by the server. Debug and trace messages will be sent to a
different sink, which must be prepared to handle a possible high rate of
logging messages.

In addition to that, messages will carry information on the sub-systems in
GCS/XCOM (e.g. GCS Engine Thread) that generated them so that we can 
dynamically
filter out messages from sub-systems that we temporarily do not want to see
writing messages into the sink.

Users with super privileges will be giving the ability to dynamically
enable debugging and tracing in production at their convenience. The sink used
to store the debugging and tracing data will be a file and will have the
appropriate permissions to avoid any security issue. Note, however, that
implementing any mechanism to manage the file such as rotating, purging it,
etc, is out of scope. Users should do so manually at their discretion.


USER STORIES
------------
- As a MySQL DBA I want to gather detailed information on group replication
  modules in production environments in order to help the analysis of issues.


LIMITATIONS/ISSUES
------------------
Debugging and tracing will be sent to an asynchronous circular buffer that
will gather messages and will eventually send them to a sink. We don't have
the intention of creating the necessary mechanism to manage files, rotate
them, for example. 

Having said that, we are planning to send the debugging and tracing messages
to a dump file. An asynchronous circular buffer, which is a solution already 
implemented in GCS, will be responsible for gathering messages and writing to 
it.