Timber is a logging system for Scala applications. It is written in Scala to take advantage of its unique language features. It’s not a wrapper for an existing Java logging library.

Configuration is done through an internal DSL, allowing you to use the full power of Scala to configure your logging system.

dispatcher.configure { IN =>
  IN ~> fanout (
    ( level >= DEBUG ),
    ( loggingClass startsWith "com.example" ) ~> ( level >= WARN )
  ) ~> stderr

It takes advantage of Scala’s by-name parameters and function literals to provide lazy message evaluation. That prevents doing work that doesn’t need to be done without requiring “isEnabled” conditionals.

log.debug(s"n = $n")

log.debug { pw: PrintWriter =>
  pw.print("Here's a multi-line log entry that")
  pw.println("won't be built unless it's needed.")

It supports the slf4j interface so that it can be used by Java classes and by applications that are already using the slf4j API (or any API for which slf4j includes a bridge).

It supports logback appenders so you can keep using any custom appenders that you’ve already written.

Get started by looking at the timber concepts.

Help improve this page.