By default this phase is handled by the built-in predicate
print_message_lines/3. Each line of the message is prefixed with
a string depending on the severity, and is printed to user_error.
The query severity is special—no newline is printed after the
last line of the message.
This behavior can be overridden by defining the hook predicate
message_hook/3, which is called with the severity of the message,
the abstract message term and its translation to
format-command lines. It can be used to make smaller changes, for
example by calling print_message_lines/3 with a stream
argument other than user_error, or to implement a totally
different display method such as using dialog windows for messages.
For messages of the severity silent the message printing phase
consists of calling the hook predicate message_hook/3 only.
Even if the hook fails, no printing is done.