anchor.diff:              newConsumer l
           logger |> withConsumer consume
       
  -    /// Decorates a Logger with a 
  +    /// Creates a new logger with a mapping function over the log entries.
       let decorate f (logger : Logger) = Logger(logger.Path, f >> logger.Consumer)
       
       /// Creates a new logger that indents all messages in the logger by 4 spaces.
  
positive.code:     /// The actual log message
      member __.Message = message
      
      override __.ToString() = sprintf "[%A|%A]%s:%s" DateTime.Now level path message
  
  [<Struct>]
  type Logger internal (path : string, consumer : LogEntry -> unit) = 
      
  
negative.code:     /// Creates a new logger with the provided path
      let withPath newPath (logger : Logger) = Logger(newPath, logger.Consumer)
      
      /// Creates a new logger with the provided path appended. This is useful for heirarchical logger pathing.
      let appendPath newPath (logger : Logger) = Logger(Path.Combine(logger.Path, newPath), logger.Consumer)
      
      /// Logs a message to the logger at the provided level.
      let inline logf level (logger : Logger) format = logger.Logf level format
      
  