A message is a collection of key/value pairs, as well as some metadata (file, line ...) that is logged. A message always has an associated source.
A sink is where messages go. Sog has some sink types built in or you can add your own.
A source is a thing that sends a single type of log. Typically this maps to a LOG
macro in your code.