GDB internally maintains a number of output streams: the console, the target, and the log. The output intended for each of these streams is funneled through the GDB/MI interface using stream records.
Each stream record begins with a unique prefix character which identifies its stream (see GDB/MI Output Syntax). In addition to the prefix, each stream record contains a string-output. This is either raw text (with an implicit new line) or a quoted C string (which does not contain an implicit newline).
The console output stream contains text that should be displayed in the CLI console window. It contains the textual responses to CLI commands.
The target output stream contains any textual output from the running target. This is only present when GDB's event loop is truly asynchronous, which is currently only the case for remote targets.
The log stream contains debugging messages being produced by GDB's internals.