This module groups all different output writers.
Different output writers have different dependencies. To ensure that those dependencies do not leak to other
output writer, or that we can limit to number of dependencies at runtime, output writers are split into
separate modules based on the dependencies they use. For example, the CloudWatch output writers depends on the
AWS SDK, which is quite large and not used by any other output writer. If you only want to send metrics to
Graphite, there should be no need to have the AWS SDK in your classpath at runtime.
Some dependencies are also problematic. They can introduce incompatibilities. For example, a few writers are
based directly on log4j or logback. This direct dependence breaks the use of SLF4J. By isolating those output
writers to a specific module, we can ensure this has minimal impact.