Our FileLogger will, as the name suggests, log things to a file. It also accepts a maximum logging level on initialization.
You should not get used to directly logging things on a disk. As stated by The Twelve-Factor App guidelines (https://12factor.net/logs), logs should be treated as event streams, in the form of a raw dump to stdout. The production environment can then route all log streams to their final destination over systemd or a dedicated log router such as Logplex (https://github.com/heroku/logplex) or Fluentd (https://github.com/fluent/fluentd). These will then decide if the logs should be sent to a file, an analysis system like Splunk (https://www.splunk.com/), or a data warehouse like Hive (http://hive.apache.org/).
Every logger needs to implement the log::Log trait, which consists of the enabled, log, and flush methods. enabled should return if a certain log event is accepted by the logger. Here, you can go wild with whatever filtering logic...