txt: ## dist_cpan-TYIL-Log-Simple.md
  ## class Log::Simple
  
  A simple implementation of Log.
  
  ### has Positional @!outputs
  
  An array of hashes. Each has must have a handle key, with an IO::Handle to print messages to. A level key with an integer to signify a Log::Level is also required.
  
  ### has Supplier $!messages
  
  A supplier to emit messages to.
  
  ### has Bool $.hostname
  
  When enabled, include hostname in the log message. This can be useful when running the application redundantly in a cluster with centralized logging.
  
  ### multi method emergency
  
  ```
  multi method emergency(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send an emergency message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method emergency
  
  ```
  multi method emergency(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted emergency message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method alert
  
  ```
  multi method alert(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send an alert message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method alert
  
  ```
  multi method alert(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted alert message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method critical
  
  ```
  multi method critical(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send a critical message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method critical
  
  ```
  multi method critical(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted critical message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method error
  
  ```
  multi method error(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send an error message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method error
  
  ```
  multi method error(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted error message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method warning
  
  ```
  multi method warning(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send a warning message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method warning
  
  ```
  multi method warning(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted warning message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method notice
  
  ```
  multi method notice(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send a notice message. This is the "normal" level to publish log entries on.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method notice
  
  ```
  multi method notice(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted notice message. This is the "normal" level to publish log entries on.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method info
  
  ```
  multi method info(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send an informational message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method info
  
  ```
  multi method info(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted informational message.
  
  ## class Str:D $format
  
  The printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method debug
  
  ```
  multi method debug(
      Str:D $message
  ) returns Mu
  
  ```
  
  Send a debug message.
  
  ## class Str:D $message
  
  The message to print.
  
  ### multi method debug
  
  ```
  multi method debug(
      Str:D $format,
      *@args
  ) returns Mu
  
  ```
  
  Send a formatted debug message.
  
  ## class Str:D $format
  
  A printf-style format string.
  
  ## class \*@args
  
  Arguments to substitute into the format string placeholders.
  
  ### multi method add-output
  
  ```
  multi method add-output(
      IO::Handle:D $handle,
      $level where { ... },
      Callable :$filter
  ) returns Mu
  
  ```
  
  Add an output to the logger.
  
  ## class IO::Handle:D $handle
  
  The IO::Handle to write log messages to.
  
  ## class $level where { ... }
  
  The log level for this particular stream.
  
  ## class Callable :$filter
  
  A filter function to apply to any messages sent to the output.
  
  ### method callee
  
  ```
  method callee(
      Int:D $depth = 3
  ) returns Str
  
  ```
  
  Convenience method to get the callee name. This is the package name if one exists, or the source file name.
  
  ## class Int:D $depth = 3
  
  The depth of which to get the callframe.
  
  ### method message
  
  ```
  method message(
      Str:D $level,
      Str:D $message
  ) returns Str
  
  ```
  
  Convenience method for formatting the message as desired.
  
  ## class Str:D $level
  
  A human readable identifier for the level.
  
  ## class Str:D $message
  
  The original message to be logged.
  
  # NAME
  
  Log::Simple
  
  # VERSION
  
  0.1.1
  
  # AUTHOR
  
  Patrick Spek [p.spek@tyil.nl](mailto:p.spek@tyil.nl)
  
  # LICENSE
  
  Copyright © 2020
  
  This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
  
  You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
  