Blindsight has some organizing principles that inform the design.

  • Loggers depend directly and solely on the SLF4J API, which can always be accessed directly.
  • APIs can be extended or replaced for domain specific logging.
  • Knowing when and when not to log is more important than “how fast” you log.
  • Loggers can be resolved from user defined context, not simply by name or by class.
  • Structured logging is baked in, uses standard Scala idioms, and can be overridden.

Likewise, there are things that Blindsight eschews:

  • No effects; logging is always a side effect.
  • No constraints or configuration on SLF4J implementation.
  • No FP library requirements; no need for scalaz, cats, zio etc.
  • No formatting on the front end; messages should not contain JSON/XML.
The source code for this page can be found here.