# Effect.Logging.Level

A dependently typed logging level representation where logging
levels are based on a Natural number range [0,70].

The `LogLevel` type allows for semantic constructors to be used
for the majority of logging levels, with an option for custom
levels to be defined.

The logging level design comes from the Log4j/Python family of
loggers.

data LogLevel : Nat -> Type

  Logging levels are natural numbers wrapped in a data type for
  convenience.

  Several aliases have been defined to aide in semantic use of the
  logging levels. These aliases have come from the Log4j/Python
  family of loggers.

  OFF : LogLevel (fromInteger 0)

    Log No Events

  TRACE : LogLevel (fromInteger 10)

    A fine-grained debug message, typically capturing the flow through
    the application.

  DEBUG : LogLevel (fromInteger 20)

    A general debugging event.

  INFO : LogLevel (fromInteger 30)

    An event for informational purposes.

  WARN : LogLevel (fromInteger 40)

    An event that might possible lead to an error.

  ERROR : LogLevel (fromInteger 50)

    An error in the application, possibly recoverable.

  FATAL : LogLevel (fromInteger 60)

    A severe error that will prevent the application from continuing.

  ALL : LogLevel (fromInteger 70)

    All events should be logged.

  CUSTOM : (n : Nat) -> {auto prf : LTE n (fromInteger 70)} -> LogLevel n

    User defined logging level.

cmpLevel : LogLevel a -> LogLevel b -> Ordering

  Compare to logging levels.